summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2016-06-08 10:01:51 +0200
committerMarc Mutz <marc.mutz@kdab.com>2016-06-08 18:29:38 +0000
commit5a15545ee274a9caa33014755a3fdb7022c7ea8c (patch)
treea7ae98ffa8c53a3d9d7ea17a365e8b3e20e24612 /src
parent4fb2b7411994852b742f944eba9d71d7d851aca5 (diff)
QDebug: fix streaming of QChars
Commit 9ef3ff30 introduced a new function, putUcs4(), to output QChar, char16_t, char32_t as a, possibly escaped, character literal, but got the order of stream modifiers wrong. Instead of applying the field width to the 'ucs' streaming, it applied it to the prefix '\u'. The same problem exists for the pad char, leading to the result '00\ue4' for a QChar containing รค (LATIN SMALL LETTER A WITH DIAERESIS) Fix by reordering the elements streamed so that the prefixes come last. Added a test. Change-Id: I6eaa0586501b9e780aaa3bb5dcec0e5c2f86a219 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/io/qdebug.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/corelib/io/qdebug.cpp b/src/corelib/io/qdebug.cpp
index 81af96b96b..a1d7d9806d 100644
--- a/src/corelib/io/qdebug.cpp
+++ b/src/corelib/io/qdebug.cpp
@@ -160,16 +160,15 @@ void QDebug::putUcs4(uint ucs4)
{
maybeQuote('\'');
if (ucs4 < 0x20) {
- stream->ts << hex << "\\x" << ucs4 << reset;
+ stream->ts << "\\x" << hex << ucs4 << reset;
} else if (ucs4 < 0x80) {
stream->ts << char(ucs4);
} else {
- stream->ts << hex << qSetPadChar(QLatin1Char('0'));
if (ucs4 < 0x10000)
- stream->ts << qSetFieldWidth(4) << "\\u";
+ stream->ts << "\\u" << qSetFieldWidth(4);
else
- stream->ts << qSetFieldWidth(8) << "\\U";
- stream->ts << ucs4 << reset;
+ stream->ts << "\\U" << qSetFieldWidth(8);
+ stream->ts << hex << qSetPadChar(QLatin1Char('0')) << ucs4 << reset;
}
maybeQuote('\'');
}