From ff9a091241370c266064c1585e56f4fb5d2436c8 Mon Sep 17 00:00:00 2001 From: Vincent Baijot Date: Sun, 18 Apr 2021 18:23:46 +0200 Subject: 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 . 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 (cherry picked from commit 366bdcde97962cf5804c519e9b605eddb543a592) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/serialization/qxmlstream.g | 2 ++ src/corelib/serialization/qxmlstreamparser_p.h | 2 ++ 2 files changed, 4 insertions(+) (limited to 'src/corelib') 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)) -- cgit v1.2.3