From 8a3e02a9e47f4ee3712263aadda936b612461bc5 Mon Sep 17 00:00:00 2001 From: dt Date: Fri, 28 Aug 2009 17:19:42 +0200 Subject: [PATCH] Fix allocating potential far too much memory in the debugger. Beware of negative sizes. --- src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp b/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp index e5893d2b368..ee941972cb0 100644 --- a/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp +++ b/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp @@ -709,8 +709,9 @@ int CdbSymbolGroupContext::dumpQString(CIDebugDataSpaces *ds, WatchData *wd) if (truncated) size = maxLength; const QChar doubleQuote = QLatin1Char('"'); - QString value(doubleQuote); - if (size) { + QString value; + if (size > 0) { + value += doubleQuote; // Should this ever be a remote debugger, need to check byte order. unsigned short *buf = new unsigned short[size + 1]; unsigned long bytesRead; @@ -724,8 +725,13 @@ int CdbSymbolGroupContext::dumpQString(CIDebugDataSpaces *ds, WatchData *wd) delete [] buf; if (truncated) value += QLatin1String("..."); + value += doubleQuote; + } else if (size == 0) { + value = QString(doubleQuote) + doubleQuote; + } else { + value = "Invalid QString"; } - value += doubleQuote; + wd->setValue(value); wd->setHasChildren(false); return 0;