From d34f44f460660b4b8afb6d00faddc0a479fb9716 Mon Sep 17 00:00:00 2001 From: hjk <qthjk@ovi.com> Date: Mon, 10 Sep 2012 23:57:52 +0200 Subject: [PATCH] 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> --- share/qtcreator/dumper/dumper.py | 32 +++++++++++++++++++++-------- src/plugins/debugger/watchutils.cpp | 18 +++++++++++++--- 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 782f9cd3d7e..c9d826e5b30 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 7767dd33f2a..bada2a9b2c7 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 b62854cdb10..77938ecef31 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); -- GitLab