ref: 15795e2b58fcb6e801c401795d40c1344517b5ee
parent: 8a659b28210220f6e29d5ed671e2c22adde9a7c1
author: Tor Andersson <tor.andersson@artifex.com>
date: Thu Oct 9 11:18:26 EDT 2014
Allow unescaped / inside classes in regular expression tokens.
--- a/jslex.c
+++ b/jslex.c
@@ -454,6 +454,7 @@
{
const char *s;
int g, m, i;
+ int inclass = 0;
/* already consumed initial '/' */
@@ -460,7 +461,7 @@
textinit(J);
/* regexp body */
- while (PEEK != '/') {
+ while (PEEK != '/' || inclass) {
if (PEEK == 0 || PEEK == '\n') {
jsY_error(J, "regular expression not terminated");
} else if (ACCEPT('\\')) {
@@ -474,6 +475,10 @@
NEXT();
}
} else {
+ if (PEEK == '[' && !inclass)
+ inclass = 1;
+ if (PEEK == ']' && inclass)
+ inclass = 0;
textpush(J, PEEK);
NEXT();
}