diff --git a/parser/html/javasrc/Tokenizer.java b/parser/html/javasrc/Tokenizer.java
index f6a7aa3ccd73..7c973355c112 100644
--- a/parser/html/javasrc/Tokenizer.java
+++ b/parser/html/javasrc/Tokenizer.java
@@ -6471,6 +6471,12 @@ public class Tokenizer implements Locator {
handleNcrValue(returnState);
state = returnState;
continue;
+ case CDATA_RSQB:
+ tokenHandler.characters(Tokenizer.RSQB_RSQB, 0, 1);
+ break eofloop;
+ case CDATA_RSQB_RSQB:
+ tokenHandler.characters(Tokenizer.RSQB_RSQB, 0, 2);
+ break eofloop;
case DATA:
default:
break eofloop;
diff --git a/parser/html/nsHtml5Tokenizer.cpp b/parser/html/nsHtml5Tokenizer.cpp
index a1bd62431311..0adaea92868e 100644
--- a/parser/html/nsHtml5Tokenizer.cpp
+++ b/parser/html/nsHtml5Tokenizer.cpp
@@ -3684,6 +3684,14 @@ nsHtml5Tokenizer::eof()
state = returnState;
continue;
}
+ case NS_HTML5TOKENIZER_CDATA_RSQB: {
+ tokenHandler->characters(nsHtml5Tokenizer::RSQB_RSQB, 0, 1);
+ NS_HTML5_BREAK(eofloop);
+ }
+ case NS_HTML5TOKENIZER_CDATA_RSQB_RSQB: {
+ tokenHandler->characters(nsHtml5Tokenizer::RSQB_RSQB, 0, 2);
+ NS_HTML5_BREAK(eofloop);
+ }
case NS_HTML5TOKENIZER_DATA:
default: {
NS_HTML5_BREAK(eofloop);
diff --git a/parser/htmlparser/tests/mochitest/html5lib_tree_construction/pending-spec-changes.dat b/parser/htmlparser/tests/mochitest/html5lib_tree_construction/pending-spec-changes.dat
index 3c0d7ef3503e..b933025a00b3 100644
--- a/parser/htmlparser/tests/mochitest/html5lib_tree_construction/pending-spec-changes.dat
+++ b/parser/htmlparser/tests/mochitest/html5lib_tree_construction/pending-spec-changes.dat
@@ -1,17 +1,8 @@
#data
-