summaryrefslogtreecommitdiffstats
path: root/src/xml
diff options
context:
space:
mode:
Diffstat (limited to 'src/xml')
-rw-r--r--src/xml/sax/qxml.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/xml/sax/qxml.cpp b/src/xml/sax/qxml.cpp
index f5d283d5ac..e98c86979b 100644
--- a/src/xml/sax/qxml.cpp
+++ b/src/xml/sax/qxml.cpp
@@ -7475,7 +7475,12 @@ bool QXmlSimpleReaderPrivate::parseReference()
case DoneD:
tmp = ref().toUInt(&ok, 10);
if (ok) {
- stringAddC(QChar(tmp));
+ if (tmp > 0xffff) {
+ stringAddC(QChar::highSurrogate(tmp));
+ stringAddC(QChar::lowSurrogate(tmp));
+ } else {
+ stringAddC(QChar(tmp));
+ }
} else {
reportParseError(QLatin1String(XMLERR_ERRORPARSINGREFERENCE));
return false;
@@ -7486,7 +7491,12 @@ bool QXmlSimpleReaderPrivate::parseReference()
case DoneH:
tmp = ref().toUInt(&ok, 16);
if (ok) {
- stringAddC(QChar(tmp));
+ if (tmp > 0xffff) {
+ stringAddC(QChar::highSurrogate(tmp));
+ stringAddC(QChar::lowSurrogate(tmp));
+ } else {
+ stringAddC(QChar(tmp));
+ }
} else {
reportParseError(QLatin1String(XMLERR_ERRORPARSINGREFERENCE));
return false;