diff --git a/mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp b/mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp index a87adbd15a1..e051b151969 100644 --- a/mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp +++ b/mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp @@ -807,9 +807,7 @@ nsresult nsHTMLTokenizer::ConsumeStartTag(PRUnichar aChar, result= aToken->Consume(aChar,aScanner,mFlags); if(NS_SUCCEEDED(result)) { - AddToken(aToken,result,&mTokenDeque,theAllocator); - NS_ENSURE_SUCCESS(result, result); eHTMLTags theTag=(eHTMLTags)aToken->GetTypeID(); @@ -980,8 +978,13 @@ nsresult nsHTMLTokenizer::ConsumeEndTag(PRUnichar aChar, // Tell the new token to finish consuming text... result= aToken->Consume(aChar,aScanner,mFlags); AddToken(aToken,result,&mTokenDeque,theAllocator); - NS_ENSURE_SUCCESS(result, result); - + if (NS_FAILED(result)) { + // Note that this early-return here is safe because we have not yet + // added any of our tokens to the queue (AddToken only adds the token if + // result is a success), so we don't need to fall through. + return result; + } + result = aScanner.Peek(aChar); if (NS_FAILED(result)) { aToken->SetInError(PR_TRUE);