From 9b42244d019011385b78975127f4026f48fc9807 Mon Sep 17 00:00:00 2001
From: hjk <hjk121@nokiamail.com>
Date: Fri, 17 Jan 2014 13:10:36 +0100
Subject: [PATCH] Debugger: Fix QFile dumper with LLDB

Change-Id: If7f9463b6a13a40de9b7b669bece2204ac858edb
Reviewed-by: hjk <hjk121@nokiamail.com>
---
 share/qtcreator/debugger/qttypes.py | 28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)

diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py
index df91e34a859..d1423825796 100644
--- a/share/qtcreator/debugger/qttypes.py
+++ b/share/qtcreator/debugger/qttypes.py
@@ -396,26 +396,22 @@ def qdump__QDir(d, value):
 
 
 def qdump__QFile(d, value):
-    try:
-        # Try using debug info first.
-        ptype = d.lookupType(d.qtNamespace() + "QFilePrivate").pointer()
-        d_ptr = value["d_ptr"]["d"]
-        fileNameAddress = d.addressOf(d_ptr.cast(ptype).dereference()["fileName"])
-        d.putNumChild(1)
-    except:
-        if d.qtVersion() >= 0x050000:
-            offset = 176 if d.is32bit() else 280
-        else:
-            offset = 140 if d.is32bit() else 232
-        privAddress = d.dereference(d.addressOf(value) + d.ptrSize())
-        fileNameAddress = privAddress + offset
-        d.putNumChild(0)
+    # 9fc0965 changes the layout of the private structure
+    qtVersion = d.qtVersion()
+    if qtVersion >= 0x050300:
+        offset = 172 if d.is32bit() else 272
+    elif qtVersion >= 0x050000:
+        offset = 176 if d.is32bit() else 280
+    else:
+        offset = 140 if d.is32bit() else 232
+    privAddress = d.dereference(d.addressOf(value) + d.ptrSize())
+    fileNameAddress = privAddress + offset
     d.putStringValueByAddress(fileNameAddress)
+    d.putNumChild(1)
     if d.isExpanded():
         with Children(d):
-            base = d.fieldAt(value.type, 0).type
-            d.putSubItem("[%s]" % str(base), value.cast(base), False)
             d.putCallItem("exists", value, "exists")
+            d.putFields(value)
 
 
 def qdump__QFileInfo(d, value):
-- 
GitLab