From e8ede283098b9a14fd60a27ee804357523b33676 Mon Sep 17 00:00:00 2001 From: "heikki%netscape.com" Date: Sat, 23 Mar 2002 02:10:38 +0000 Subject: [PATCH] Bug 132238, add back support for SGML short comment and other junk even in strict comment parsing. r=harishd, sr=jst, a=asa. git-svn-id: svn://10.0.0.236/trunk@117282 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/htmlparser/src/nsHTMLTokens.cpp | 20 +++++++++++++++++++ .../parser/htmlparser/src/nsHTMLTokens.cpp | 20 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/mozilla/htmlparser/src/nsHTMLTokens.cpp b/mozilla/htmlparser/src/nsHTMLTokens.cpp index 9cc2d0d7696..80e8ade2990 100644 --- a/mozilla/htmlparser/src/nsHTMLTokens.cpp +++ b/mozilla/htmlparser/src/nsHTMLTokens.cpp @@ -1078,6 +1078,26 @@ nsresult ConsumeStrictComment(nsScanner& aScanner, nsString& aString) { currentEnd = end; } } + + // This might have been empty comment: + // Or it could have been something completely bogus like: + // Handle both cases below + aScanner.CurrentPosition(current); + beginData = current; + if (FindCharInReadable('>', current, end)) { +#if 0 + // XXX We should do this, but it HANGS until bug 112943 is fixed: + aString = Substring(beginData, current); +#else + // XXX Instead we can do this EVIL HACK (from jag): + PRUint32 len = Distance(beginData, current); + aString.SetLength(len); + PRUnichar* dest = NS_CONST_CAST(PRUnichar*, aString.get()); + copy_string(beginData, current, dest); +#endif + aScanner.SetPosition(++current); + return NS_OK; + } return kEOF; // not really an nsresult, but... } diff --git a/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp b/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp index 9cc2d0d7696..80e8ade2990 100644 --- a/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp +++ b/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp @@ -1078,6 +1078,26 @@ nsresult ConsumeStrictComment(nsScanner& aScanner, nsString& aString) { currentEnd = end; } } + + // This might have been empty comment: + // Or it could have been something completely bogus like: + // Handle both cases below + aScanner.CurrentPosition(current); + beginData = current; + if (FindCharInReadable('>', current, end)) { +#if 0 + // XXX We should do this, but it HANGS until bug 112943 is fixed: + aString = Substring(beginData, current); +#else + // XXX Instead we can do this EVIL HACK (from jag): + PRUint32 len = Distance(beginData, current); + aString.SetLength(len); + PRUnichar* dest = NS_CONST_CAST(PRUnichar*, aString.get()); + copy_string(beginData, current, dest); +#endif + aScanner.SetPosition(++current); + return NS_OK; + } return kEOF; // not really an nsresult, but... }