From 320dad5ff71db809e2ba069d0eb5778d80131bf0 Mon Sep 17 00:00:00 2001 From: "bzbarsky%mit.edu" Date: Sat, 10 Jan 2004 21:43:32 +0000 Subject: [PATCH] Don't leave garbage on the namespace stack in failure cases. Bug 230360, r=sicking, sr=jst git-svn-id: svn://10.0.0.236/trunk@151147 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/content/xml/document/src/nsXMLContentSink.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mozilla/content/xml/document/src/nsXMLContentSink.cpp b/mozilla/content/xml/document/src/nsXMLContentSink.cpp index 91c8cc38206..4168d410285 100644 --- a/mozilla/content/xml/document/src/nsXMLContentSink.cpp +++ b/mozilla/content/xml/document/src/nsXMLContentSink.cpp @@ -1224,6 +1224,12 @@ nsXMLContentSink::HandleEndElement(const PRUnichar *aName) NS_ASSERTION(content, "failed to pop content"); result = CloseElement(content, &appendContent); + + // Make sure to pop the namespaces no matter whether CloseElement + // succeeded. + nsINameSpace* nameSpace = PopNameSpaces().get(); + NS_IF_RELEASE(nameSpace); + NS_ENSURE_SUCCESS(result, result); if (mDocElement == content) { @@ -1236,9 +1242,6 @@ nsXMLContentSink::HandleEndElement(const PRUnichar *aName) parent->AppendChildTo(content, PR_FALSE, PR_FALSE); } - nsINameSpace* nameSpace = PopNameSpaces().get(); - NS_IF_RELEASE(nameSpace); - if (mNeedToBlockParser || (mParser && !mParser->IsParserEnabled())) { if (mParser) mParser->BlockParser(); result = NS_ERROR_HTMLPARSER_BLOCK;