summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@theqtcompany.com>2016-03-19 23:56:50 +0100
committerhjk <hjk@theqtcompany.com>2016-03-21 15:03:03 +0000
commitdb3217af367deb598028d0b436a4b9c4fbec1ee0 (patch)
tree0402fa32083d9f2aa7236b647acdb253e5bb1145
parentddde4bdd273749fc244613c04d88856667e0920a (diff)
downloadqt-creator-db3217af367deb598028d0b436a4b9c4fbec1ee0.tar.gz
Debugger: Make QVariant dumper more robust
Change-Id: Ic9ce15eaf88f8a5267c9e8d3f9d049d9b2035eb1 Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
-rw-r--r--share/qtcreator/debugger/qttypes.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py
index 65fac46b43..b2b0ffd4eb 100644
--- a/share/qtcreator/debugger/qttypes.py
+++ b/share/qtcreator/debugger/qttypes.py
@@ -2152,15 +2152,23 @@ def qdump__QVariant(d, value):
data = value["d"]["data"]
ns = d.qtNamespace()
inner = ns + innert
- if d.isLldb:
- # Looking up typedefs is problematic.
+ innerType = d.lookupType(inner)
+
+ if innerType is None:
+ # Looking up typedefs is problematic with LLDB, and can also
+ # happen with GDB e.g. in the QVariant2 dumper test on x86
+ # unless further use of the empty QVariantHash is added.
if innert == "QVariantMap":
inner = "%sQMap<%sQString, %sQVariant>" % (ns, ns, ns)
elif innert == "QVariantHash":
inner = "%sQHash<%sQString, %sQVariant>" % (ns, ns, ns)
elif innert == "QVariantList":
inner = "%sQList<%sQVariant>" % (ns, ns)
- innerType = d.lookupType(inner)
+ innerType = d.lookupType(inner)
+
+ if innerType is None:
+ self.putSpecialValue("notaccessible")
+ return innert
if toInteger(value["d"]["is_shared"]):
val = data["ptr"].cast(innerType.pointer().pointer()).dereference().dereference()