diff --git a/mozilla/parser/htmlparser/src/nsParser.cpp b/mozilla/parser/htmlparser/src/nsParser.cpp index b698402fbb9..dadb259ceb5 100644 --- a/mozilla/parser/htmlparser/src/nsParser.cpp +++ b/mozilla/parser/htmlparser/src/nsParser.cpp @@ -1638,7 +1638,14 @@ nsParser::Parse(const nsAString& aSourceBuffer, pc->mContextType=CParserContext::eCTString; pc->SetMimeType(aMimeType); - pc->mDTDMode=aMode; + if (pc->mPrevContext && aMode == eDTDMode_autodetect) { + // Preserve the DTD mode from the last context, bug 265814. + pc->mDTDMode = pc->mPrevContext->mDTDMode; + } + else { + pc->mDTDMode = aMode; + } + mUnusedInput.Truncate(0); //printf("Parse(string) iterate: %i",PR_FALSE);