From 155a78d2ed9c985b6bbe74cc0875607312cad30f Mon Sep 17 00:00:00 2001 From: "vidur%netscape.com" Date: Mon, 18 Dec 2000 20:58:53 +0000 Subject: [PATCH] Fix for bug 62782. Edge case in scanner caused us to drop characters occasionally. Thanks to jst for identification of the problem. r=harishd, sr=jst git-svn-id: svn://10.0.0.236/trunk@83797 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/htmlparser/src/nsHTMLTokenizer.cpp | 13 ++++++++----- mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp | 13 ++++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/mozilla/htmlparser/src/nsHTMLTokenizer.cpp b/mozilla/htmlparser/src/nsHTMLTokenizer.cpp index 89876110630..36903ca77df 100644 --- a/mozilla/htmlparser/src/nsHTMLTokenizer.cpp +++ b/mozilla/htmlparser/src/nsHTMLTokenizer.cpp @@ -717,12 +717,15 @@ nsresult nsHTMLTokenizer::ConsumeStartTag(PRUnichar aChar,CToken*& aToken,nsScan //if((eHTMLTag_style==theTag) || (eHTMLTag_script==theTag)) { if(gHTMLElements[theTag].CanContainType(kCDATA)) { - nsAutoString endTag; endTag.AssignWithConversion(nsHTMLTags::GetStringValue(theTag)); - endTag.InsertWithConversion("CreateTokenOfType(eToken_text,eHTMLTag_text); - result=((CTextToken*)textToken)->ConsumeUntil(0,PRBool(theTag!=eHTMLTag_script),aScanner,endTag,mParseMode,aFlushTokens); //tell new token to finish consuming text... - //endTag.Append(">"); - CToken* endToken=theAllocator->CreateTokenOfType(eToken_end,theTag,endTag); + result=((CTextToken*)textToken)->ConsumeUntil(0,PRBool(theTag!=eHTMLTag_script),aScanner,endText,mParseMode,aFlushTokens); //tell new token to finish consuming text... + + CToken* endToken=theAllocator->CreateTokenOfType(eToken_end,theTag,endTagName); AddToken(textToken,result,&mTokenDeque,theAllocator); AddToken(endToken,result,&mTokenDeque,theAllocator); } diff --git a/mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp b/mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp index 89876110630..36903ca77df 100644 --- a/mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp +++ b/mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp @@ -717,12 +717,15 @@ nsresult nsHTMLTokenizer::ConsumeStartTag(PRUnichar aChar,CToken*& aToken,nsScan //if((eHTMLTag_style==theTag) || (eHTMLTag_script==theTag)) { if(gHTMLElements[theTag].CanContainType(kCDATA)) { - nsAutoString endTag; endTag.AssignWithConversion(nsHTMLTags::GetStringValue(theTag)); - endTag.InsertWithConversion("CreateTokenOfType(eToken_text,eHTMLTag_text); - result=((CTextToken*)textToken)->ConsumeUntil(0,PRBool(theTag!=eHTMLTag_script),aScanner,endTag,mParseMode,aFlushTokens); //tell new token to finish consuming text... - //endTag.Append(">"); - CToken* endToken=theAllocator->CreateTokenOfType(eToken_end,theTag,endTag); + result=((CTextToken*)textToken)->ConsumeUntil(0,PRBool(theTag!=eHTMLTag_script),aScanner,endText,mParseMode,aFlushTokens); //tell new token to finish consuming text... + + CToken* endToken=theAllocator->CreateTokenOfType(eToken_end,theTag,endTagName); AddToken(textToken,result,&mTokenDeque,theAllocator); AddToken(endToken,result,&mTokenDeque,theAllocator); }