diff options
author | Rohan McGovern <rohan.mcgovern@nokia.com> | 2011-09-19 04:12:35 (GMT) |
---|---|---|
committer | Rohan McGovern <rohan.mcgovern@nokia.com> | 2011-09-19 04:12:35 (GMT) |
commit | 5055f13683dd0670d62a81e61bf097fd220f0d42 (patch) | |
tree | 1cf10d701b6d6ba5fffe9a2267ecf894d505e1bd /src/corelib/codecs | |
parent | fc602cb1737e58b4b814c4a799fa2a68acb6dbcd (diff) | |
parent | 53d9e3620ede7492c141402d9365d5c0dd7c10fd (diff) | |
download | Qt-5055f13683dd0670d62a81e61bf097fd220f0d42.zip Qt-5055f13683dd0670d62a81e61bf097fd220f0d42.tar.gz Qt-5055f13683dd0670d62a81e61bf097fd220f0d42.tar.bz2 |
Merge remote branch 'origin/4.8' into doc-staging-master
Conflicts:
dist/changes-4.8.0
Diffstat (limited to 'src/corelib/codecs')
-rw-r--r-- | src/corelib/codecs/qutfcodec.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp index f59f404..aaebec3 100644 --- a/src/corelib/codecs/qutfcodec.cpp +++ b/src/corelib/codecs/qutfcodec.cpp @@ -90,8 +90,8 @@ QByteArray QUtf8::convertFromUnicode(const QChar *uc, int len, QTextCodec::Conve while (ch < end) { uint u = ch->unicode(); if (surrogate_high >= 0) { - if (u >= 0xdc00 && u < 0xe000) { - u = (surrogate_high - 0xd800)*0x400 + (u - 0xdc00) + 0x10000; + if (ch->isLowSurrogate()) { + u = QChar::surrogateToUcs4(surrogate_high, u); surrogate_high = -1; } else { // high surrogate without low @@ -101,13 +101,13 @@ QByteArray QUtf8::convertFromUnicode(const QChar *uc, int len, QTextCodec::Conve surrogate_high = -1; continue; } - } else if (u >= 0xdc00 && u < 0xe000) { + } else if (ch->isLowSurrogate()) { // low surrogate without high *cursor = replacement; ++ch; ++invalid; continue; - } else if (u >= 0xd800 && u < 0xdc00) { + } else if (ch->isHighSurrogate()) { surrogate_high = u; ++ch; continue; |