summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <qthjk@ovi.com>2012-09-10 23:57:52 +0200
committerhjk <qthjk@ovi.com>2012-09-11 00:33:46 +0200
commitd34f44f460660b4b8afb6d00faddc0a479fb9716 (patch)
tree067016d396a990a369d25834267b51ebf289420d
parent66a19cc457f472013cfb442904e2ce9d532c4d54 (diff)
downloadqt-creator-d34f44f460660b4b8afb6d00faddc0a479fb9716.tar.gz
debugger: fix display of signed data in arrays
This was a regression introduced with the block dumping for arrays. Change-Id: I9684fafeb27a9268a2558557f76d1092136975a4 Reviewed-by: hjk <qthjk@ovi.com>
-rw-r--r--share/qtcreator/dumper/dumper.py32
-rw-r--r--src/plugins/debugger/watchutils.cpp18
-rw-r--r--src/plugins/debugger/watchutils.h8
3 files changed, 44 insertions, 14 deletions
diff --git a/share/qtcreator/dumper/dumper.py b/share/qtcreator/dumper/dumper.py
index 782f9cd3d7..c9d826e5b3 100644
--- a/share/qtcreator/dumper/dumper.py
+++ b/share/qtcreator/dumper/dumper.py
@@ -69,9 +69,13 @@ Hex2EncodedInt1, \
Hex2EncodedInt2, \
Hex2EncodedInt4, \
Hex2EncodedInt8, \
+Hex2EncodedUInt1, \
+Hex2EncodedUInt2, \
+Hex2EncodedUInt4, \
+Hex2EncodedUInt8, \
Hex2EncodedFloat4, \
Hex2EncodedFloat8 \
- = range(23)
+ = range(27)
# Display modes
StopDisplay, \
@@ -498,14 +502,24 @@ def simpleEncoding(typeobj):
if code == BoolCode or code == CharCode:
return Hex2EncodedInt1
if code == IntCode:
- if typeobj.sizeof == 1:
- return Hex2EncodedInt1
- if typeobj.sizeof == 2:
- return Hex2EncodedInt2
- if typeobj.sizeof == 4:
- return Hex2EncodedInt4
- if typeobj.sizeof == 8:
- return Hex2EncodedInt8
+ if str(typeobj).find("unsigned") >= 0:
+ if typeobj.sizeof == 1:
+ return Hex2EncodedUInt1
+ if typeobj.sizeof == 2:
+ return Hex2EncodedUInt2
+ if typeobj.sizeof == 4:
+ return Hex2EncodedUInt4
+ if typeobj.sizeof == 8:
+ return Hex2EncodedUInt8
+ else:
+ if typeobj.sizeof == 1:
+ return Hex2EncodedInt1
+ if typeobj.sizeof == 2:
+ return Hex2EncodedInt2
+ if typeobj.sizeof == 4:
+ return Hex2EncodedInt4
+ if typeobj.sizeof == 8:
+ return Hex2EncodedInt8
if code == FloatCode:
if typeobj.sizeof == 4:
return Hex2EncodedFloat4
diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp
index 7767dd33f2..bada2a9b2c 100644
--- a/src/plugins/debugger/watchutils.cpp
+++ b/src/plugins/debugger/watchutils.cpp
@@ -725,15 +725,27 @@ void decodeArray(QList<WatchData> *list, const WatchData &tmplate,
{
switch (encoding) {
case Hex2EncodedInt1:
- decodeArrayHelper<uchar>(list, tmplate, rawData);
+ decodeArrayHelper<signed char>(list, tmplate, rawData);
break;
case Hex2EncodedInt2:
- decodeArrayHelper<ushort>(list, tmplate, rawData);
+ decodeArrayHelper<short>(list, tmplate, rawData);
break;
case Hex2EncodedInt4:
- decodeArrayHelper<uint>(list, tmplate, rawData);
+ decodeArrayHelper<int>(list, tmplate, rawData);
break;
case Hex2EncodedInt8:
+ decodeArrayHelper<qint64>(list, tmplate, rawData);
+ break;
+ case Hex2EncodedUInt1:
+ decodeArrayHelper<uchar>(list, tmplate, rawData);
+ break;
+ case Hex2EncodedUInt2:
+ decodeArrayHelper<ushort>(list, tmplate, rawData);
+ break;
+ case Hex2EncodedUInt4:
+ decodeArrayHelper<uint>(list, tmplate, rawData);
+ break;
+ case Hex2EncodedUInt8:
decodeArrayHelper<quint64>(list, tmplate, rawData);
break;
case Hex2EncodedFloat4:
diff --git a/src/plugins/debugger/watchutils.h b/src/plugins/debugger/watchutils.h
index b62854cdb1..77938ecef3 100644
--- a/src/plugins/debugger/watchutils.h
+++ b/src/plugins/debugger/watchutils.h
@@ -75,8 +75,12 @@ enum DebuggerEncoding
Hex2EncodedInt2 = 18,
Hex2EncodedInt4 = 19,
Hex2EncodedInt8 = 20,
- Hex2EncodedFloat4 = 21,
- Hex2EncodedFloat8 = 22
+ Hex2EncodedUInt1 = 21,
+ Hex2EncodedUInt2 = 22,
+ Hex2EncodedUInt4 = 23,
+ Hex2EncodedUInt8 = 24,
+ Hex2EncodedFloat4 = 25,
+ Hex2EncodedFloat8 = 26
};
bool isEditorDebuggable(Core::IEditor *editor);