diff options
author | Vincent Baijot <vincentbaijot@gmail.com> | 2021-04-18 18:23:46 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-04-20 02:48:52 +0000 |
commit | ff9a091241370c266064c1585e56f4fb5d2436c8 (patch) | |
tree | 4b01b5d7ac52348b06ad52c15e8c5b3474bb7731 /src/corelib | |
parent | c701e6bb38bbab9520b43297e8bc603f09227f44 (diff) |
Correct prefix reported for end element in QXmlStreamReader
Before this change, QXmlStreamReader prefix value was always an empty
string for EndElement when the documentation state : "Returns the prefix
of a StartElement or EndElement."
The error was a missing update of the prefix value when parsing
EndElement.
I updated the tests data which were also wrong because no prefix were
reported even for </a:foo>. No new test is necessary, I think, the test
data already cover the cases of EndElement with a prefix and without one
(unchanged here).
Fixes: QTBUG-86847
Change-Id: I0ad38b9741d760f1ce688a36f969ec14e20a928c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit 366bdcde97962cf5804c519e9b605eddb543a592)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/serialization/qxmlstream.g | 2 | ||||
-rw-r--r-- | src/corelib/serialization/qxmlstreamparser_p.h | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/corelib/serialization/qxmlstream.g b/src/corelib/serialization/qxmlstream.g index b6417b080c..0051c6255b 100644 --- a/src/corelib/serialization/qxmlstream.g +++ b/src/corelib/serialization/qxmlstream.g @@ -237,6 +237,7 @@ bool QXmlStreamReaderPrivate::parse() setType(QXmlStreamReader::EndElement); Tag tag = tagStack_pop(); namespaceUri = tag.namespaceDeclaration.namespaceUri; + prefix = tag.namespaceDeclaration.prefix; name = tag.name; qualifiedName = tag.qualifiedName; isEmptyElement = false; @@ -1300,6 +1301,7 @@ etag ::= LANGLE SLASH qname space_opt RANGLE; namespaceUri = tag.namespaceDeclaration.namespaceUri; name = tag.name; qualifiedName = tag.qualifiedName; + prefix = tag.namespaceDeclaration.prefix; if (qualifiedName != symName(3)) raiseWellFormedError(QXmlStream::tr("Opening and ending tag mismatch.")); } break; diff --git a/src/corelib/serialization/qxmlstreamparser_p.h b/src/corelib/serialization/qxmlstreamparser_p.h index a5d8312390..d568f9d024 100644 --- a/src/corelib/serialization/qxmlstreamparser_p.h +++ b/src/corelib/serialization/qxmlstreamparser_p.h @@ -92,6 +92,7 @@ bool QXmlStreamReaderPrivate::parse() setType(QXmlStreamReader::EndElement); Tag tag = tagStack_pop(); namespaceUri = tag.namespaceDeclaration.namespaceUri; + prefix = tag.namespaceDeclaration.prefix; name = tag.name; qualifiedName = tag.qualifiedName; isEmptyElement = false; @@ -843,6 +844,7 @@ bool QXmlStreamReaderPrivate::parse() Tag tag = tagStack_pop(); namespaceUri = tag.namespaceDeclaration.namespaceUri; + prefix = tag.namespaceDeclaration.prefix; name = tag.name; qualifiedName = tag.qualifiedName; if (qualifiedName != symName(3)) |