diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-01-31 14:28:28 +0100 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2013-01-31 15:49:24 +0100 |
commit | 5a4cd737ba9e0b864fdb14c7bee3b746eeb92148 (patch) | |
tree | 26222bc7c1a2fe3db6008dd22a53f000af6ecf6e /src/libs/qtcreatorcdbext | |
parent | 72421c18c1f597755f9bd7a4d62751858a935c8b (diff) | |
download | qt-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.cpp | 12 | ||||
-rw-r--r-- | src/libs/qtcreatorcdbext/stringutils.h | 4 | ||||
-rw-r--r-- | src/libs/qtcreatorcdbext/symbolgroupvalue.cpp | 11 |
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 |