summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@digia.com>2013-07-01 08:31:09 +0200
committerDavid Schulz <david.schulz@digia.com>2013-07-01 09:27:39 +0200
commit924115d735df538c5c454c1f7d11345e2eb34aaf (patch)
treea2099c45664e266159354b3aa139836a870da770
parent1fad00f9991b86c3a329410c95f148b6ce3ef0d3 (diff)
downloadqt-creator-924115d735df538c5c454c1f7d11345e2eb34aaf.tar.gz
Cdbext: Fix QMap dumper for Qt5...
... when the symbol was added as an expression. It seems that calling GetSymbolTypeName somehow destroys the red-black tree, so moved the call before creating the tree. Change-Id: Iefb187df4e7f99cfd95195a6ac9a4d8c64fa2365 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
-rw-r--r--src/libs/qtcreatorcdbext/containers.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/libs/qtcreatorcdbext/containers.cpp b/src/libs/qtcreatorcdbext/containers.cpp
index 58e87b0a2c..8fbd64f0a5 100644
--- a/src/libs/qtcreatorcdbext/containers.cpp
+++ b/src/libs/qtcreatorcdbext/containers.cpp
@@ -943,6 +943,12 @@ static inline AbstractSymbolGroupNodePtrVector qMap5Nodes(const SymbolGroupValue
SymbolGroupValue root = head["left"];
if (!root)
return AbstractSymbolGroupNodePtrVector();
+
+ const std::string nodeType = qHashNodeType(v, "Node");
+ const std::string nodePtrType = nodeType + " *";
+ if (SymbolGroupValue::verbose)
+ DebugPrint() << v.type() << "," << nodeType;
+
RedBlackTreeNode *nodeTree =
RedBlackTreeNode::buildMapRecursion(root, head.address(), 0, "left", "right");
if (!nodeTree)
@@ -951,10 +957,6 @@ static inline AbstractSymbolGroupNodePtrVector qMap5Nodes(const SymbolGroupValue
nodeTree->debug(DebugPrint(), debugQMap5Node);
VectorIndexType i = 0;
// Finally convert them into real nodes 'QHashNode<K,V> (potentially expensive)
- const std::string nodeType = qHashNodeType(v, "Node");
- const std::string nodePtrType = nodeType + " *";
- if (SymbolGroupValue::verbose)
- DebugPrint() << v.type() << "," << nodeType;
AbstractSymbolGroupNodePtrVector result;
result.reserve(count);
for (const RedBlackTreeNode *n = nodeTree->begin() ; n && i < count; n = RedBlackTreeNode::next(n), i++) {