From dd651204c935890189295a739d2068444118b916 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 26 Nov 2009 08:51:43 +0100 Subject: [PATCH] CDB: Fix disassembler for 64 bit addresses. --- src/plugins/debugger/cdb/cdbassembler.cpp | 9 +++++++-- src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbassembler.cpp b/src/plugins/debugger/cdb/cdbassembler.cpp index 180326a15d3..1e27cf53f32 100644 --- a/src/plugins/debugger/cdb/cdbassembler.cpp +++ b/src/plugins/debugger/cdb/cdbassembler.cpp @@ -38,9 +38,14 @@ // Format a hex address with a given field width if possible. Convert // to number to ensure it is not truncated should it be larger than the -// field width. -static inline void formatAddress(QTextStream &str, const QString &hexAddressS, int fieldWidth) +// field width. Check the 64 bit address format '00000001`40002c84' +static inline void formatAddress(QTextStream &str, QString hexAddressS, int fieldWidth) { + if (hexAddressS.size() > 9) { + const int sepPos = hexAddressS.size() - 9; + if (hexAddressS.at(sepPos) == QLatin1Char('`')) + hexAddressS.remove(sepPos, 1); + } const QChar oldPadChar = str.padChar(); const int oldFieldWidth = str.fieldWidth(); const int oldIntegerBase = str.integerBase(); diff --git a/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp b/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp index 2589046edcb..b37c8218890 100644 --- a/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp +++ b/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp @@ -454,7 +454,8 @@ static inline QString removeInnerTemplateType(QString value) // "0x4343 class list<>". static inline QString fixValue(const QString &value, const QString &type) { - if (value.endsWith(QLatin1Char('"'))) // Pass through strings + // Pass through strings, chars + if (value.endsWith(QLatin1Char('"')) || value.endsWith(QLatin1Char('\''))) return value; const int size = value.size(); // Unsigned hex numbers