summaryrefslogtreecommitdiff
path: root/src/libs/qtcreatorcdbext
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-01-31 14:28:28 +0100
committerhjk <hjk121@nokiamail.com>2013-01-31 15:49:24 +0100
commit5a4cd737ba9e0b864fdb14c7bee3b746eeb92148 (patch)
tree26222bc7c1a2fe3db6008dd22a53f000af6ecf6e /src/libs/qtcreatorcdbext
parent72421c18c1f597755f9bd7a4d62751858a935c8b (diff)
downloadqt-creator-5a4cd737ba9e0b864fdb14c7bee3b746eeb92148.tar.gz
CDB: Use maxStringLength parameter from settings.
Change-Id: I0969bbbc39863e0981b5af81feced10d0fbbecac Reviewed-by: hjk <hjk121@nokiamail.com>
Diffstat (limited to 'src/libs/qtcreatorcdbext')
-rw-r--r--src/libs/qtcreatorcdbext/stringutils.cpp12
-rw-r--r--src/libs/qtcreatorcdbext/stringutils.h4
-rw-r--r--src/libs/qtcreatorcdbext/symbolgroupvalue.cpp11
3 files changed, 17 insertions, 10 deletions
diff --git a/src/libs/qtcreatorcdbext/stringutils.cpp b/src/libs/qtcreatorcdbext/stringutils.cpp
index 12fc0889d4..386768a95a 100644
--- a/src/libs/qtcreatorcdbext/stringutils.cpp
+++ b/src/libs/qtcreatorcdbext/stringutils.cpp
@@ -209,26 +209,30 @@ inline char toHexDigit(unsigned v)
}
// Strings from raw data.
-std::wstring quotedWStringFromCharData(const unsigned char *data, size_t size)
+std::wstring quotedWStringFromCharData(const unsigned char *data, size_t size, bool truncated)
{
std::wstring rc;
- rc.reserve(size + 2);
+ rc.reserve(size + (truncated ? 5 : 2));
rc.push_back(L'"');
const unsigned char *end = data + size;
for ( ; data < end; data++)
rc.push_back(wchar_t(*data));
+ if (truncated)
+ rc.append(L"...");
rc.push_back(L'"');
return rc;
}
-std::wstring quotedWStringFromWCharData(const unsigned char *dataIn, size_t sizeIn)
+std::wstring quotedWStringFromWCharData(const unsigned char *dataIn, size_t sizeIn, bool truncated)
{
std::wstring rc;
const wchar_t *data = reinterpret_cast<const wchar_t *>(dataIn);
const size_t size = sizeIn / sizeof(wchar_t);
- rc.reserve(size + 2);
+ rc.reserve(size + (truncated ? 5 : 2));
rc.push_back(L'"');
rc.append(data, data + size);
+ if (truncated)
+ rc.append(L"...");
rc.push_back(L'"');
return rc;
}
diff --git a/src/libs/qtcreatorcdbext/stringutils.h b/src/libs/qtcreatorcdbext/stringutils.h
index 798fe435b6..8462b3e7c2 100644
--- a/src/libs/qtcreatorcdbext/stringutils.h
+++ b/src/libs/qtcreatorcdbext/stringutils.h
@@ -176,8 +176,8 @@ std::string wStringToString(const std::wstring &w);
std::wstring stringToWString(const std::string &w);
// Strings from raw data.
-std::wstring quotedWStringFromCharData(const unsigned char *data, size_t size);
-std::wstring quotedWStringFromWCharData(const unsigned char *data, size_t size);
+std::wstring quotedWStringFromCharData(const unsigned char *data, size_t size, bool truncated = false);
+std::wstring quotedWStringFromWCharData(const unsigned char *data, size_t size, bool truncated = false);
// Helper for dumping memory
std::string dumpMemory(const unsigned char *data, size_t size, bool wantQuotes = true);
diff --git a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp
index d4bff29932..59642c69f5 100644
--- a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp
+++ b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp
@@ -1590,7 +1590,7 @@ static inline bool dumpQString(const SymbolGroupValue &v, std::wostream &str,
if (!typeArrayV)
return false;
if (!readQt5StringData(typeArrayV, qtInfo.version, true, position,
- std::min(length, unsigned(10240)),
+ std::min(length, ExtensionContext::instance().parameters().maxStringLength),
&fullSize, &size, &memory))
return false;
if (size) {
@@ -2302,9 +2302,12 @@ static bool dumpStd_W_String(const SymbolGroupValue &v, int type, std::wostream
// and MSVC2008 none
const SymbolGroupValue bx = SymbolGroupValue::findMember(v, "_Bx");
const int reserved = bx.parent()["_Myres"].intValue();
- const int size = bx.parent()["_Mysize"].intValue();
+ int size = bx.parent()["_Mysize"].intValue();
if (!bx || reserved < 0 || size < 0)
return false;
+ const bool truncated = unsigned(size) > ExtensionContext::instance().parameters().maxStringLength;
+ if (truncated)
+ size = ExtensionContext::instance().parameters().maxStringLength;
// 'Buf' array for small strings, else pointer 'Ptr'.
const int bufSize = type == KT_StdString ? 16 : 8; // see basic_string.
const unsigned long memSize = type == KT_StdString ? size : 2 * size;
@@ -2315,8 +2318,8 @@ static bool dumpStd_W_String(const SymbolGroupValue &v, int type, std::wostream
if (!memory)
return false;
str << (type == KT_StdString ?
- quotedWStringFromCharData(memory, memSize) :
- quotedWStringFromWCharData(memory, memSize));
+ quotedWStringFromCharData(memory, memSize, truncated) :
+ quotedWStringFromWCharData(memory, memSize, truncated));
if (memoryHandle)
*memoryHandle = new MemoryHandle(memory, memSize);
else