diff options
author | hjk <hjk@theqtcompany.com> | 2015-08-12 09:05:28 +0200 |
---|---|---|
committer | hjk <hjk@theqtcompany.com> | 2015-08-12 08:07:08 +0000 |
commit | d7c5ee7eddec23217912db1af02720d324612dcd (patch) | |
tree | 2fd357037b4decc527d06ead099ddc2703028751 /share | |
parent | 07e1f78ca854c6ead70878142f8b81a43b8b0731 (diff) | |
download | qt-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.py | 18 | ||||
-rw-r--r-- | share/qtcreator/debugger/gdbbridge.py | 2 | ||||
-rw-r--r-- | share/qtcreator/debugger/stdtypes.py | 8 |
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") |