diff --git a/mozilla/htmlparser/src/CNavDTD.cpp b/mozilla/htmlparser/src/CNavDTD.cpp
index 483175f292c..bd7c3944a01 100644
--- a/mozilla/htmlparser/src/CNavDTD.cpp
+++ b/mozilla/htmlparser/src/CNavDTD.cpp
@@ -720,9 +720,9 @@ nsresult CNavDTD::HandleDefaultStartToken(CToken* aToken,eHTMLTags aChildTag,nsI
//Sick as it sounds, I have to make sure the body has been
//opened before other tags can be added to the content sink...
-
- static eHTMLTags gBodyBlockers[]={eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head};
- PRInt32 theBodyBlocker=GetTopmostIndexOf(gBodyBlockers,sizeof(gStyleTags)/sizeof(eHTMLTag_unknown));
+
+ static eHTMLTags gBodyBlockers[]={eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,eHTMLTag_map};
+ PRInt32 theBodyBlocker=GetTopmostIndexOf(gBodyBlockers,sizeof(gBodyBlockers)/sizeof(eHTMLTag_unknown));
if(!theBodyBlocker) {
if(CanPropagate(eHTMLTag_body,aChildTag)) {
mHasOpenBody=PR_TRUE;
@@ -1971,8 +1971,10 @@ nsresult CNavDTD::OpenMap(const nsIParserNode& aNode){
if(mHasOpenMap)
CloseMap(aNode);
nsresult result=mSink->OpenMap(aNode);
- if(NS_OK==result)
+ if(NS_OK==result) {
+ mBodyContext->Push((eHTMLTags)aNode.GetNodeType());
mHasOpenMap=PR_TRUE;
+ }
return result;
}
@@ -1989,6 +1991,7 @@ nsresult CNavDTD::CloseMap(const nsIParserNode& aNode){
if(mHasOpenMap) {
mHasOpenMap=PR_FALSE;
result=mSink->CloseMap(aNode);
+ mBodyContext->Pop();
}
return result;
}
diff --git a/mozilla/htmlparser/src/nsElementTable.h b/mozilla/htmlparser/src/nsElementTable.h
index e9487bf11ff..8da6a500ceb 100644
--- a/mozilla/htmlparser/src/nsElementTable.h
+++ b/mozilla/htmlparser/src/nsElementTable.h
@@ -141,7 +141,7 @@ CTagList gDTKids(1,eHTMLTag_dt);
CTagList gFieldsetKids(1,eHTMLTag_legend);
CTagList gFormKids(1,eHTMLTag_keygen);
CTagList gFramesetKids(3,eHTMLTag_frame,eHTMLTag_frameset,eHTMLTag_noframes);
-CTagList gHtmlKids(5,eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,eHTMLTag_noscript,eHTMLTag_script);
+CTagList gHtmlKids(6,eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,eHTMLTag_map,eHTMLTag_noscript,eHTMLTag_script);
CTagList gHeadKids(7,eHTMLTag_base,eHTMLTag_bgsound,eHTMLTag_link,eHTMLTag_meta,eHTMLTag_script,eHTMLTag_style,eHTMLTag_title);
CTagList gMapKids(1,eHTMLTag_area);
CTagList gNoframesKids(1,eHTMLTag_body);
diff --git a/mozilla/htmlparser/src/nsParser.cpp b/mozilla/htmlparser/src/nsParser.cpp
index 2946114f4f3..c5c463680bf 100644
--- a/mozilla/htmlparser/src/nsParser.cpp
+++ b/mozilla/htmlparser/src/nsParser.cpp
@@ -612,6 +612,11 @@ nsresult nsParser::Parse(nsString& aSourceBuffer,PRBool anHTMLString,PRBool aVer
mDTDVerification=aVerifyEnabled;
mStreamListenerState=eOnStart;
+ {
+ fstream out("c:/temp/out.file",ios::trunc);
+ aSourceBuffer.DebugDump(out);
+ }
+
nsresult result=NS_OK;
if(0OpenMap(aNode);
- if(NS_OK==result)
+ if(NS_OK==result) {
+ mBodyContext->Push((eHTMLTags)aNode.GetNodeType());
mHasOpenMap=PR_TRUE;
+ }
return result;
}
@@ -1989,6 +1991,7 @@ nsresult CNavDTD::CloseMap(const nsIParserNode& aNode){
if(mHasOpenMap) {
mHasOpenMap=PR_FALSE;
result=mSink->CloseMap(aNode);
+ mBodyContext->Pop();
}
return result;
}
diff --git a/mozilla/parser/htmlparser/src/nsElementTable.h b/mozilla/parser/htmlparser/src/nsElementTable.h
index e9487bf11ff..8da6a500ceb 100644
--- a/mozilla/parser/htmlparser/src/nsElementTable.h
+++ b/mozilla/parser/htmlparser/src/nsElementTable.h
@@ -141,7 +141,7 @@ CTagList gDTKids(1,eHTMLTag_dt);
CTagList gFieldsetKids(1,eHTMLTag_legend);
CTagList gFormKids(1,eHTMLTag_keygen);
CTagList gFramesetKids(3,eHTMLTag_frame,eHTMLTag_frameset,eHTMLTag_noframes);
-CTagList gHtmlKids(5,eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,eHTMLTag_noscript,eHTMLTag_script);
+CTagList gHtmlKids(6,eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,eHTMLTag_map,eHTMLTag_noscript,eHTMLTag_script);
CTagList gHeadKids(7,eHTMLTag_base,eHTMLTag_bgsound,eHTMLTag_link,eHTMLTag_meta,eHTMLTag_script,eHTMLTag_style,eHTMLTag_title);
CTagList gMapKids(1,eHTMLTag_area);
CTagList gNoframesKids(1,eHTMLTag_body);
diff --git a/mozilla/parser/htmlparser/src/nsParser.cpp b/mozilla/parser/htmlparser/src/nsParser.cpp
index 2946114f4f3..c5c463680bf 100644
--- a/mozilla/parser/htmlparser/src/nsParser.cpp
+++ b/mozilla/parser/htmlparser/src/nsParser.cpp
@@ -612,6 +612,11 @@ nsresult nsParser::Parse(nsString& aSourceBuffer,PRBool anHTMLString,PRBool aVer
mDTDVerification=aVerifyEnabled;
mStreamListenerState=eOnStart;
+ {
+ fstream out("c:/temp/out.file",ios::trunc);
+ aSourceBuffer.DebugDump(out);
+ }
+
nsresult result=NS_OK;
if(0