diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2019-06-04 23:53:31 -0600 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2019-06-04 23:53:31 -0600 |
commit | 28dacbd66b5fb07add399e2ee9e46d85258e078d (patch) | |
tree | 4874dfafd4242c24c6b12890f47c8e29e3b65220 /b.c | |
parent | 4189ef5d585f54879014a00263300b9dfc7e128c (diff) | |
download | one-true-awk-28dacbd66b5fb07add399e2ee9e46d85258e078d.tar.gz |
Allow unmatched right paren in regexes. Fixes Issue #40.
Diffstat (limited to 'b.c')
-rw-r--r-- | b.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -912,6 +912,7 @@ int relex(void) /* lexical analyzer for reparse */ int i; int num, m, commafound, digitfound; const uschar *startreptok; + static int parens = 0; rescan: starttok = prestr; @@ -925,9 +926,18 @@ rescan: case '\0': prestr--; return '\0'; case '^': case '$': + return c; case '(': - case ')': + parens++; return c; + case ')': + if (parens) { + parens--; + return c; + } + /* unmatched close parenthesis; per POSIX, treat as literal */ + rlxval = c; + return CHAR; case '\\': rlxval = quoted(&prestr); return CHAR; |