From 741f170e6f1036af4ea0e88e1db610f64364c62f Mon Sep 17 00:00:00 2001 From: Tooru Fujisawa Date: Sat, 11 Jun 2016 06:04:34 +0900 Subject: [PATCH] #393, Bug 1279467 - Fix null handling in RegExp character class with unicode flag. r=till --- js/src/irregexp/RegExpParser.cpp | 1 + js/src/tests/ecma_6/RegExp/class-null.js | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 js/src/tests/ecma_6/RegExp/class-null.js diff --git a/js/src/irregexp/RegExpParser.cpp b/js/src/irregexp/RegExpParser.cpp index 1874368a5..d452178e6 100644 --- a/js/src/irregexp/RegExpParser.cpp +++ b/js/src/irregexp/RegExpParser.cpp @@ -510,6 +510,7 @@ RegExpParser::ParseClassCharacterEscape(widechar* code) case '6': case '7': if (unicode_) { if (current() == '0') { + Advance(); *code = 0; return true; } diff --git a/js/src/tests/ecma_6/RegExp/class-null.js b/js/src/tests/ecma_6/RegExp/class-null.js new file mode 100644 index 000000000..c95e5a4d7 --- /dev/null +++ b/js/src/tests/ecma_6/RegExp/class-null.js @@ -0,0 +1,15 @@ +var BUGNUMBER = 1279467; +var summary = "Null in character class in RegExp with unicode flag."; + +print(BUGNUMBER + ": " + summary); + +var m = /([\0]+)/u.exec("\u0000"); +assertEq(m.length, 2); +assertEq(m[0], '\u0000'); +assertEq(m[1], '\u0000'); + +var m = /([\0]+)/u.exec("0"); +assertEq(m, null); + +if (typeof reportCompare === "function") + reportCompare(true, true);