diff --git a/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp b/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp
index 6278b7490f8..d9d351bdc32 100644
--- a/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp
+++ b/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp
@@ -1294,9 +1294,9 @@ nsresult CCommentToken::ConsumeStrictComment(nsScanner& aScanner)
if (balancedComment && IsCommentEnd(current, end, gt)) {
// done
current.advance(-2);
- if (beginData != current) { // protects from
- aScanner.BindSubstring(mComment, beginData, current);
- }
+ // Note: it's ok if beginData == current, (we'll copy an empty string)
+ // and we need to bind mComment anyway.
+ aScanner.BindSubstring(mComment, beginData, current);
aScanner.BindSubstring(mCommentDecl, lt, ++gt);
aScanner.SetPosition(gt);
return NS_OK;
@@ -1329,7 +1329,7 @@ nsresult CCommentToken::ConsumeStrictComment(nsScanner& aScanner)
// wait for more content, and try again.
// XXX For performance reasons we should cache where we were, and
// continue from there for next call
- return kEOF; // not really an nsresult, but...
+ return kEOF;
}
// There was no terminating string, parse this comment as text.
@@ -1397,9 +1397,7 @@ nsresult CCommentToken::ConsumeQuirksComment(nsScanner& aScanner)
if (goodComment) {
// done
- if (beginLastMinus != current) { // protects from
- aScanner.BindSubstring(mComment, beginData, ++current);
- }
+ aScanner.BindSubstring(mComment, beginData, ++current);
aScanner.BindSubstring(mCommentDecl, lt, ++gt);
aScanner.SetPosition(gt);
return NS_OK;
@@ -1426,9 +1424,7 @@ nsresult CCommentToken::ConsumeQuirksComment(nsScanner& aScanner)
// If so, rewind just pass that, and use everything up to that point as your comment.
// If not, the document has no end comment and should be treated as one big comment.
gt = bestAltCommentEnd;
- if (beginData != gt) { // protects from
- aScanner.BindSubstring(mComment, beginData, gt);
- }
+ aScanner.BindSubstring(mComment, beginData, gt);
if (gt != end) {
++gt;
}
@@ -1464,6 +1460,11 @@ nsresult CCommentToken::ConsumeQuirksComment(nsScanner& aScanner)
if (current != gt) {
aScanner.BindSubstring(mComment, beginData, ++current);
}
+ else {
+ // Bind mComment to an empty string (note that if current == gt,
+ // then current == beginData). We reach this for
+ aScanner.BindSubstring(mComment, beginData, current);
+ }
aScanner.BindSubstring(mCommentDecl, lt, ++gt);
aScanner.SetPosition(gt);
return NS_OK;