Debugger: Prevent endless recursion on output of broken dumpers

That fixes a recent regression.  If a dumper announces to have children,
but doesn't produce any we re-tried for ever. This is reproducible e.g.
by putting an 'return' before any 'if d.isExpanded():' stanza in a
dumper and triggering that dumper.

Keep track of expanded items, and only ask for children once per
location change.

Change-Id: I349fdc7380444eb3ac9fa2fae098a3f3e7658195
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
This commit is contained in:
hjk
2015-03-23 13:17:56 +01:00
parent c1fd41c5b0
commit c097867f3c
2 changed files with 13 additions and 16 deletions

View File

@@ -90,7 +90,7 @@ typedef QVector<DisplayFormat> DisplayFormats;
class WatchItem : public Utils::TreeItem, public WatchData
{
public:
WatchItem();
WatchItem() {}
WatchItem(const QByteArray &i, const QString &n);
explicit WatchItem(const WatchData &data);
explicit WatchItem(const GdbMi &data);
@@ -123,7 +123,6 @@ private:
Qt::ItemFlags flags(int column) const;
void parseWatchData(const GdbMi &input);
bool fetchTriggered;
};
class UpdateParameters