From 9f333724f294bb6077ea75a44bca3382eeabb1ee Mon Sep 17 00:00:00 2001 From: "harishd%netscape.com" Date: Wed, 19 May 1999 22:14:01 +0000 Subject: [PATCH] Fix for Bug# 6716 - Handling multiple tags in a document. Fix for Bug# 6644 - Illegal content handling in tables - Tweaked. (R) rickg (A) chofmann --- htmlparser/src/CNavDTD.cpp | 12 +++++++----- parser/htmlparser/src/CNavDTD.cpp | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/htmlparser/src/CNavDTD.cpp b/htmlparser/src/CNavDTD.cpp index 4e82f548909..ca38575c57f 100644 --- a/htmlparser/src/CNavDTD.cpp +++ b/htmlparser/src/CNavDTD.cpp @@ -540,7 +540,13 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse mSink=(nsIHTMLContentSink*)aSink; if(aNotifySink && mSink){ if((NS_OK==anErrorCode) && (mBodyContext->GetCount()>0)) { - result = CloseContainersTo(0,eHTMLTag_unknown,PR_FALSE); + while(mBodyContext->GetCount() > 0) { + eHTMLTags theTarget = mBodyContext->Last(); + if(gHTMLElements[theTarget].HasSpecialProperty(kBadContentWatch)) + result = HandleSavedTokensAbove(theTarget); + CloseContainersTo(theTarget,PR_FALSE); + } + //result = CloseContainersTo(0,eHTMLTag_unknown,PR_FALSE); } #ifdef RGESS_DEBUG @@ -1398,10 +1404,6 @@ nsresult CNavDTD::HandleStartToken(CToken* aToken) { if(nsHTMLElement::IsSectionTag(theChildTag)){ switch(theChildTag){ case eHTMLTag_body: - if(HasOpenContainer(theChildTag)){ - return NS_OK; //OpenContainer(attrNode,PR_FALSE); - } - break; case eHTMLTag_head: if(mHadBodyOrFrameset) { result=HandleOmittedTag(aToken,theChildTag,theParent,attrNode); diff --git a/parser/htmlparser/src/CNavDTD.cpp b/parser/htmlparser/src/CNavDTD.cpp index 4e82f548909..ca38575c57f 100644 --- a/parser/htmlparser/src/CNavDTD.cpp +++ b/parser/htmlparser/src/CNavDTD.cpp @@ -540,7 +540,13 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse mSink=(nsIHTMLContentSink*)aSink; if(aNotifySink && mSink){ if((NS_OK==anErrorCode) && (mBodyContext->GetCount()>0)) { - result = CloseContainersTo(0,eHTMLTag_unknown,PR_FALSE); + while(mBodyContext->GetCount() > 0) { + eHTMLTags theTarget = mBodyContext->Last(); + if(gHTMLElements[theTarget].HasSpecialProperty(kBadContentWatch)) + result = HandleSavedTokensAbove(theTarget); + CloseContainersTo(theTarget,PR_FALSE); + } + //result = CloseContainersTo(0,eHTMLTag_unknown,PR_FALSE); } #ifdef RGESS_DEBUG @@ -1398,10 +1404,6 @@ nsresult CNavDTD::HandleStartToken(CToken* aToken) { if(nsHTMLElement::IsSectionTag(theChildTag)){ switch(theChildTag){ case eHTMLTag_body: - if(HasOpenContainer(theChildTag)){ - return NS_OK; //OpenContainer(attrNode,PR_FALSE); - } - break; case eHTMLTag_head: if(mHadBodyOrFrameset) { result=HandleOmittedTag(aToken,theChildTag,theParent,attrNode);