From 79df1c08043b16f1141f3f6f470557a06f55c242 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 24 Nov 2020 16:33:57 +0100 Subject: [PATCH] Debugger: Use Values instead of addresses in putStringValue Change-Id: I31a3c1a326d777d9e7081552d5a956e8e2882dcf Reviewed-by: Christian Stenger --- share/qtcreator/debugger/dumper.py | 8 ++++---- share/qtcreator/debugger/qttypes.py | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index a9ef5b980f7..d0d1244ff1b 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -608,7 +608,8 @@ class DumperBase(): return data, size, alloc # addr is the begin of a QByteArrayData structure - def encodeStringHelper(self, addr, limit): + def encodeStringHelper(self, value, limit): + addr = self.extractPointer(value) # Should not happen, but we get it with LLDB as result # of inferior calls if addr == 0: @@ -690,7 +691,7 @@ class DumperBase(): data = self.readMemory(ptr, shown) return data else: - elided, data = self.encodeStringHelper(self.extractPointer(value), limit) + elided, data = self.encodeStringHelper(value, limit) return data def encodedUtf16ToUtf8(self, s): @@ -750,8 +751,7 @@ class DumperBase(): data = self.readMemory(ptr, shown) self.putValue(data, 'utf16', elided=elided) else: - addr = self.extractPointer(value) - elided, data = self.encodeStringHelper(addr, self.displayStringLimit) + elided, data = self.encodeStringHelper(value, self.displayStringLimit) self.putValue(data, 'utf16', elided=elided) def putPtrItem(self, name, value): diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 36da4087a5b..0d1facbecbf 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -3052,7 +3052,8 @@ def qdump__QJsonValue(d, value): return if t == 3: d.putType('QJsonValue (String)') - elided, base = d.encodeStringHelper(data, d.displayStringLimit) + string = value.split('{QString}')[0] + elided, base = d.encodeString(string, d.displayStringLimit) d.putValue(base, 'utf16', elided=elided) return if t == 4: