summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorhjk <hjk@theqtcompany.com>2015-08-12 09:05:28 +0200
committerhjk <hjk@theqtcompany.com>2015-08-12 08:07:08 +0000
commitd7c5ee7eddec23217912db1af02720d324612dcd (patch)
tree2fd357037b4decc527d06ead099ddc2703028751 /share
parent07e1f78ca854c6ead70878142f8b81a43b8b0731 (diff)
downloadqt-creator-d7c5ee7eddec23217912db1af02720d324612dcd.tar.gz
Debugger: Fix display selection of char arrays
... by re-using the logic we had for std::string already. A plain char[] value did not react to Change Display Format, Latin1 was used unconditionally. Also rename putStdStringHelper to putCharArrayHelper. Change-Id: I01fdf796ff49a4c99ead7b9b46274684e18e962b Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/debugger/dumper.py18
-rw-r--r--share/qtcreator/debugger/gdbbridge.py2
-rw-r--r--share/qtcreator/debugger/stdtypes.py8
3 files changed, 10 insertions, 18 deletions
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py
index 0e0acceb23..4ffdd7f0c7 100644
--- a/share/qtcreator/debugger/dumper.py
+++ b/share/qtcreator/debugger/dumper.py
@@ -569,7 +569,7 @@ class DumperBase:
elided, shown = self.computeLimit(size, limit)
return elided, self.readMemory(data, shown)
- def putStdStringHelper(self, data, size, charSize, displayFormat = AutomaticFormat):
+ def putCharArrayHelper(self, data, size, charSize, displayFormat = AutomaticFormat):
bytelen = size * charSize
elided, shown = self.computeLimit(bytelen, self.displayStringLimit)
mem = self.readMemory(data, shown)
@@ -917,18 +917,10 @@ class DumperBase:
arrayByteSize = int(s[s.find('[')+1:s.find(']')]) * ts;
n = int(arrayByteSize / ts)
- if displayFormat != RawFormat:
- if innerTypeName == "char":
- # Use Latin1 as default for char [].
- blob = self.readMemory(self.addressOf(value), arrayByteSize)
- self.putValue(blob, Hex2EncodedLatin1)
- elif innerTypeName == "wchar_t":
- blob = self.readMemory(self.addressOf(value), arrayByteSize)
- if innerType.sizeof == 2:
- self.putValue(blob, Hex4EncodedLittleEndian)
- else:
- self.putValue(blob, Hex8EncodedLittleEndian)
- elif p:
+ if displayFormat != RawFormat and p:
+ if innerTypeName == "char" or innerTypeName == "wchar_t":
+ self.putCharArrayHelper(p, n, ts, self.currentItemFormat())
+ else:
self.tryPutSimpleFormattedPointer(p, arrayType, innerTypeName,
displayFormat, arrayByteSize)
self.putNumChild(n)
diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py
index b2047d867b..2a7cb77006 100644
--- a/share/qtcreator/debugger/gdbbridge.py
+++ b/share/qtcreator/debugger/gdbbridge.py
@@ -155,7 +155,7 @@ class PlainDumper:
if isinstance(val, str):
d.putValue(val)
else: # Assuming LazyString
- d.putStdStringHelper(val.address, val.length, val.type.sizeof)
+ d.putCharArrayHelper(val.address, val.length, val.type.sizeof)
d.putNumChild(len(children))
if d.isExpanded():
diff --git a/share/qtcreator/debugger/stdtypes.py b/share/qtcreator/debugger/stdtypes.py
index d37edc150a..60c271ebcd 100644
--- a/share/qtcreator/debugger/stdtypes.py
+++ b/share/qtcreator/debugger/stdtypes.py
@@ -419,7 +419,7 @@ def qdump__std__stringHelper1(d, value, charSize, format):
refcount = int(sizePtr[-1]) & 0xffffffff
d.check(refcount >= -1) # Can be -1 accoring to docs.
d.check(0 <= size and size <= alloc and alloc <= 100*1000*1000)
- d.putStdStringHelper(sizePtr, size, charSize, format)
+ d.putCharArrayHelper(sizePtr, size, charSize, format)
def qdump__std__stringHelper1__QNX(d, value, charSize, format):
size = value['_Mysize']
@@ -433,7 +433,7 @@ def qdump__std__stringHelper1__QNX(d, value, charSize, format):
refcount = int(sizePtr[-1])
d.check(refcount >= -1) # Can be -1 accoring to docs.
d.check(0 <= size and size <= alloc and alloc <= 100*1000*1000)
- d.putStdStringHelper(sizePtr, size, charSize, format)
+ d.putCharArrayHelper(sizePtr, size, charSize, format)
def qdump__std____1__string(d, value):
@@ -447,7 +447,7 @@ def qdump__std____1__string(d, value):
# Short/internal.
size = firstByte / 2
data = base + 1
- d.putStdStringHelper(data, size, 1, d.currentItemFormat())
+ d.putCharArrayHelper(data, size, 1, d.currentItemFormat())
d.putType("std::string")
@@ -462,7 +462,7 @@ def qdump__std____1__wstring(d, value):
# Short/internal.
size = firstByte / 2
data = base + 4
- d.putStdStringHelper(data, size, 4)
+ d.putCharArrayHelper(data, size, 4)
d.putType("std::xxwstring")