diff options
Diffstat (limited to 'src/xml/sax/qxml.cpp')
-rw-r--r-- | src/xml/sax/qxml.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/xml/sax/qxml.cpp b/src/xml/sax/qxml.cpp index 50900c17f0..0c5855cf07 100644 --- a/src/xml/sax/qxml.cpp +++ b/src/xml/sax/qxml.cpp @@ -5265,7 +5265,12 @@ bool QXmlSimpleReaderPrivate::parsePEReference() return false; } if (ret) { - xmlRefString = ret->data(); + QString buffer = ret->data(); + while (!buffer.isEmpty()) { + xmlRefString += buffer; + ret->fetchData(); + buffer = ret->data(); + } delete ret; if (!stripTextDecl(xmlRefString)) { reportParseError(QLatin1String(XMLERR_ERRORINTEXTDECL)); @@ -7614,7 +7619,14 @@ bool QXmlSimpleReaderPrivate::processReference() return false; } if (ret) { - QString xmlRefString = ret->data(); + QString xmlRefString; + QString buffer = ret->data(); + while (!buffer.isEmpty()) { + xmlRefString += buffer; + ret->fetchData(); + buffer = ret->data(); + } + delete ret; if (!stripTextDecl(xmlRefString)) { reportParseError(QLatin1String(XMLERR_ERRORINTEXTDECL)); |