summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-06-05 08:43:17 -0700
committerKaz Kylheku <kaz@kylheku.com>2014-06-05 08:43:17 -0700
commitd6f20f3610af0648b00a3200a32e24b17c04d763 (patch)
tree3750f1c328ce617e1d75ba2adb50780216a40676
parentc32afe5ce6c0c05e7fc978b321113228b4fa49f9 (diff)
downloadtxr-d6f20f3610af0648b00a3200a32e24b17c04d763.tar.gz
txr-d6f20f3610af0648b00a3200a32e24b17c04d763.tar.bz2
txr-d6f20f3610af0648b00a3200a32e24b17c04d763.zip
* parser.l: Adding an explicit lexical rule to
catch backslashes occurring within a regex, not followed by a character. This can happen in dynamically parsed regexes such as "abc\\".
-rw-r--r--ChangeLog7
-rw-r--r--parser.l5
2 files changed, 12 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index b3ecc3a1..9cbb1bb3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2014-06-05 Kaz Kylheku <kaz@kylheku.com>
+ * parser.l: Adding an explicit lexical rule to
+ catch backslashes occurring within a regex, not followed by a
+ character. This can happen in dynamically parsed regexes
+ such as "abc\\".
+
+2014-06-05 Kaz Kylheku <kaz@kylheku.com>
+
* parser.l (yylex_destroy): Only rely on the FLEX_ version
numbers if they are defined. In a newer flex, they are prefixed
by YY_.
diff --git a/parser.l b/parser.l
index a49e43d5..fa3c88cb 100644
--- a/parser.l
+++ b/parser.l
@@ -751,6 +751,11 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
return REGCHAR;
}
+<REGEX>[\\] {
+ yyerrprepf(lit("dangling backslash in regex"), nao);
+ return ERRTOK;
+}
+
<REGEX>{UANYN} {
wchar_t buf[8];
utf8_from(buf, yytext);