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... }