diff options
author | hjk <qthjk@ovi.com> | 2012-09-10 23:57:52 +0200 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2012-09-11 00:33:46 +0200 |
commit | d34f44f460660b4b8afb6d00faddc0a479fb9716 (patch) | |
tree | 067016d396a990a369d25834267b51ebf289420d | |
parent | 66a19cc457f472013cfb442904e2ce9d532c4d54 (diff) | |
download | qt-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.py | 32 | ||||
-rw-r--r-- | src/plugins/debugger/watchutils.cpp | 18 | ||||
-rw-r--r-- | src/plugins/debugger/watchutils.h | 8 |
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); |