diff --git a/content/html/document/src/nsHTMLContentSink.cpp b/content/html/document/src/nsHTMLContentSink.cpp index cbfa0c4ae11..3d35816d8a0 100644 --- a/content/html/document/src/nsHTMLContentSink.cpp +++ b/content/html/document/src/nsHTMLContentSink.cpp @@ -1145,6 +1145,12 @@ SinkContext::OpenContainer(const nsIParserNode& aNode) mStackPos, mSink); + if (mStackPos <= 0) { + NS_ERROR("container w/o parent"); + + return NS_ERROR_FAILURE; + } + nsresult rv; if (mStackPos + 1 > mStackSize) { rv = GrowStack(); @@ -1165,6 +1171,7 @@ SinkContext::OpenContainer(const nsIParserNode& aNode) mStack[mStackPos].mContent = content; mStack[mStackPos].mNumFlushed = 0; mStack[mStackPos].mInsertionPoint = -1; + ++mStackPos; // XXX Need to do this before we start adding attributes. if (nodeType == eHTMLTag_style) { @@ -1221,24 +1228,16 @@ SinkContext::OpenContainer(const nsIParserNode& aNode) rv = mSink->AddAttributes(aNode, content); MaybeSetForm(content, nodeType, mSink); - if (mStackPos <= 0) { - NS_ERROR("container w/o parent"); + nsGenericHTMLElement* parent = mStack[mStackPos - 2].mContent; - return NS_ERROR_FAILURE; - } - - nsGenericHTMLElement* parent = mStack[mStackPos - 1].mContent; - - if (mStack[mStackPos - 1].mInsertionPoint != -1) { + if (mStack[mStackPos - 2].mInsertionPoint != -1) { parent->InsertChildAt(content, - mStack[mStackPos - 1].mInsertionPoint++, + mStack[mStackPos - 2].mInsertionPoint++, PR_FALSE); } else { parent->AppendChildTo(content, PR_FALSE); } - mStackPos++; - NS_ENSURE_SUCCESS(rv, rv); if (mSink->IsMonolithicContainer(nodeType)) {