From 7ee4034ddc5bb035ed7cfcb57b34a602cd1ebf4c Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 19 Apr 2011 12:56:23 +0200 Subject: [PATCH] Debugger: Fix memory editing. Typing characters > 127 caused signedness problems (causing large uints to be passed to the debuggers). Reviewed-by: hjk --- src/plugins/debugger/cdb/cdbparsehelpers.cpp | 6 ++++-- src/plugins/debugger/gdb/gdbengine.cpp | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbparsehelpers.cpp b/src/plugins/debugger/cdb/cdbparsehelpers.cpp index a4d1e7ccbe6..533b90de259 100644 --- a/src/plugins/debugger/cdb/cdbparsehelpers.cpp +++ b/src/plugins/debugger/cdb/cdbparsehelpers.cpp @@ -333,8 +333,10 @@ QByteArray cdbWriteMemoryCommand(quint64 addr, const QByteArray &data) str.setIntegerBase(16); str << "f " << addr << " L" << data.size(); const int count = data.size(); - for (int i = 0 ; i < count ; i++ ) - str << ' ' << int(data.at(i)); + for (int i = 0 ; i < count ; i++ ) { + const unsigned char uc = (unsigned char)data.at(i); + str << ' ' << unsigned(uc); + } return cmd; } diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 14e3bf9826a..acb77d2b4cb 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3954,7 +3954,8 @@ void GdbEngine::changeMemory(MemoryAgent *agent, QObject *token, QByteArray cmd = "-data-write-memory " + QByteArray::number(addr) + " d 1"; foreach (char c, data) { cmd.append(' '); - cmd.append(QByteArray::number(uint(c))); + const unsigned char uc = (unsigned char)c; + cmd.append(QByteArray::number(uint(uc))); } postCommand(cmd, NeedsStop, CB(handleChangeMemory), QVariant::fromValue(MemoryAgentCookie(agent, token, addr)));