summaryrefslogtreecommitdiff
path: root/xmlreader/source/xmlreader.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xmlreader/source/xmlreader.cxx')
-rw-r--r--xmlreader/source/xmlreader.cxx6
1 files changed, 5 insertions, 1 deletions
diff --git a/xmlreader/source/xmlreader.cxx b/xmlreader/source/xmlreader.cxx
index 95a27a785b5c..918f42a2e1b2 100644
--- a/xmlreader/source/xmlreader.cxx
+++ b/xmlreader/source/xmlreader.cxx
@@ -714,7 +714,11 @@ XmlReader::Result XmlReader::handleEndTag() {
void XmlReader::handleElementEnd() {
assert(!elements_.empty());
- namespaces_.resize(elements_.top().inheritedNamespaces);
+ // remove keys from cache that are no longer valid
+ auto end = elements_.top().inheritedNamespaces;
+ for (auto i = end; i < namespaces_.size(); ++i)
+ cacheNSIds_.erase(namespaces_[i].prefix);
+ namespaces_.resize(end);
elements_.pop();
state_ = elements_.empty() ? State::Done : State::Content;
}