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