From 7788e95ee9a7355018e579c78b0c36e7f41ae16d Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Tue, 17 Aug 2010 15:52:01 +0200
Subject: [PATCH] debugger: fix display of arrays of types that gdb forgot
 about (cherry picked from commit a1f2638c5fd6603c14065bcc0e0ddbe35463fc9b)

Conflicts:

	share/qtcreator/gdbmacros/dumper.py
---
 share/qtcreator/gdbmacros/dumper.py | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py
index 903efc214f0..975303b9714 100644
--- a/share/qtcreator/gdbmacros/dumper.py
+++ b/share/qtcreator/gdbmacros/dumper.py
@@ -116,10 +116,15 @@ def lookupType(typestring):
         try:
             #warn("LOOKING UP '%s'" % ts)
             type = gdb.lookup_type(ts)
-        except:
-            # Can throw "RuntimeError: No type named class Foo."
-            #warn("LOOKING UP '%s' FAILED" % ts)
-            pass
+        except RuntimeError, error:
+            #warn("LOOKING UP '%s': %s" % (ts, error))
+            # See http://sourceware.org/bugzilla/show_bug.cgi?id=11912
+            exp = "(class '%s'*)0" % ts
+            try:
+                type = parseAndEvaluate(exp).type.target()
+            except:
+                # Can throw "RuntimeError: No type named class Foo."
+                pass
         #warn("  RESULT: '%s'" % type)
         #if not type is None:
         #    warn("  FIELDS: '%s'" % type.fields())
@@ -805,7 +810,9 @@ def extractFields(type):
     #warn("TYPE 0: %s" % type)
     type = stripTypedefs(type)
     #warn("TYPE 1: %s" % type)
-    type = lookupType(str(type))
+    type0 = lookupType(str(type))
+    if not type0 is None:
+        type = type0
     #warn("TYPE 2: %s" % type)
     fields = type.fields()
     #warn("FIELDS: %s" % fields)
-- 
GitLab