summaryrefslogtreecommitdiff
path: root/src/regexp_nfa.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-06-17 20:08:20 +0200
committerBram Moolenaar <Bram@vim.org>2017-06-17 20:08:20 +0200
commit1ef9bbe215e13a273e74fccaddd8fc5a42c76b6e (patch)
treee7e91f215db3694732b431b3ff76eaa6008827d2 /src/regexp_nfa.c
parent5b1affefd0e96154517ec6f71300086ae6d22d24 (diff)
downloadvim-git-1ef9bbe215e13a273e74fccaddd8fc5a42c76b6e.tar.gz
patch 8.0.0645: no error for illegal back reference in NFA enginev8.0.0645
Problem: The new regexp engine does not give an error for using a back reference where it is not allowed. (Dominique Pelle) Solution: Check the back reference like the old engine. (closes #1774)
Diffstat (limited to 'src/regexp_nfa.c')
-rw-r--r--src/regexp_nfa.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
index 5ba80f2fe..804d742ab 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -1446,8 +1446,14 @@ nfa_regatom(void)
case Magic('7'):
case Magic('8'):
case Magic('9'):
- EMIT(NFA_BACKREF1 + (no_Magic(c) - '1'));
- nfa_has_backref = TRUE;
+ {
+ int refnum = no_Magic(c) - '1';
+
+ if (!seen_endbrace(refnum + 1))
+ return FAIL;
+ EMIT(NFA_BACKREF1 + refnum);
+ nfa_has_backref = TRUE;
+ }
break;
case Magic('z'):