summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHonglei Zhang <honglei.zhang@nokia.com>2011-08-24 11:13:35 (GMT)
committerHonglei Zhang <honglei.zhang@nokia.com>2011-08-24 11:13:35 (GMT)
commit49dd6e2978759a3fc46016d82a46d8ee8b609221 (patch)
tree7a760744b6d6c62822ccb1710f2c862607b1ba13
parenta28832bb61e7e60ac0fb856daf27b78ff1728520 (diff)
parente8b49d0e33ea6c8a2814fcad70015dbcc28e9a5d (diff)
downloadQt-49dd6e2978759a3fc46016d82a46d8ee8b609221.zip
Qt-49dd6e2978759a3fc46016d82a46d8ee8b609221.tar.gz
Qt-49dd6e2978759a3fc46016d82a46d8ee8b609221.tar.bz2
Merge branch 'xmlExtRefBuffer'
-rw-r--r--src/xml/sax/qxml.cpp8
-rwxr-xr-xtests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/015.entbin0 -> 2130 bytes
-rw-r--r--tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/015.xml6
-rw-r--r--tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/015.xml.ref10
4 files changed, 23 insertions, 1 deletions
diff --git a/src/xml/sax/qxml.cpp b/src/xml/sax/qxml.cpp
index 2f5384b..0c7f2ab 100644
--- a/src/xml/sax/qxml.cpp
+++ b/src/xml/sax/qxml.cpp
@@ -7748,7 +7748,13 @@ bool QXmlSimpleReaderPrivate::processReference()
return false;
}
if (ret) {
- QString xmlRefString = ret->data();
+ QString xmlRefString;
+ QString buffer = ret->data();
+ while (buffer.length()>0){
+ xmlRefString += buffer;
+ ret->fetchData();
+ buffer = ret->data();
+ }
delete ret;
if (!stripTextDecl(xmlRefString)) {
reportParseError(QLatin1String(XMLERR_ERRORINTEXTDECL));
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/015.ent b/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/015.ent
new file mode 100755
index 0000000..86a8679
--- /dev/null
+++ b/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/015.ent
Binary files differ
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/015.xml b/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/015.xml
new file mode 100644
index 0000000..5550dab
--- /dev/null
+++ b/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/015.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc k(#PCDATA)>
+<!ENTITY e SYSTEM "015.ent">
+]>
+<doc>&e;</doc>
+
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/015.xml.ref b/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/015.xml.ref
new file mode 100644
index 0000000..1ec309a
--- /dev/null
+++ b/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/015.xml.ref
@@ -0,0 +1,10 @@
+setDocumentLocator(locator={columnNumber=1, lineNumber=1})
+startDocument()
+ startDTD(name="doc", publicId="", systemId="")
+ externalEntityDecl(name="e", publicId="", systemId="015.ent")
+ endDTD()
+ startElement(namespaceURI="", localName="doc", qName="doc", atts=[])
+ resolveEntity(publicId="", systemId="015.ent", ret={})
+ skippedEntity(name="e")
+ endElement(namespaceURI="", localName="doc", qName="doc")
+endDocument()