diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-05-13 22:18:43 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-05-13 22:19:10 +0200 |
commit | 3d4aeb791990f359e277efbfb0a1f1793945b55d (patch) | |
tree | e877b7b4ad76d554aa3dbe6131d03b98a7447c63 /src/testlib/qtestcase.cpp | |
parent | b861c43395b17d5df34f24853faa21b9824a53af (diff) | |
parent | c8de2a8b5f5d0b9b3bc1d8ed8d3027ac40b00ee3 (diff) |
Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
src/gui/kernel/qguiapplication.cpp
Change-Id: Ibe75603dc8a51769db6550ea3f07bc8d19b0be85
Diffstat (limited to 'src/testlib/qtestcase.cpp')
-rw-r--r-- | src/testlib/qtestcase.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index cc58b51743..ffcc7abbfe 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -2143,18 +2143,26 @@ char *toHexRepresentation(const char *ba, int length) char *toPrettyUnicode(const ushort *p, int length) { // keep it simple for the vast majority of cases - QScopedArrayPointer<char> buffer(new char[length * 6 + 3]); + bool trimmed = false; + QScopedArrayPointer<char> buffer(new char[256]); const ushort *end = p + length; char *dst = buffer.data(); *dst++ = '"'; for ( ; p != end; ++p) { + if (dst - buffer.data() > 245) { + // plus the the quote, the three dots and NUL, it's 250, 251 or 255 + trimmed = true; + break; + } + if (*p < 0x7f && *p >= 0x20 && *p != '\\') { *dst++ = *p; continue; } // write as an escape sequence + // this means we may advance dst to buffer.data() + 246 or 250 *dst++ = '\\'; switch (*p) { case 0x22: @@ -2186,6 +2194,11 @@ char *toPrettyUnicode(const ushort *p, int length) } *dst++ = '"'; + if (trimmed) { + *dst++ = '.'; + *dst++ = '.'; + *dst++ = '.'; + } *dst++ = '\0'; return buffer.take(); } |