patch 8.0.0645: no error for illegal back reference in NFA engine
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)
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
index 5ba80f2..804d742 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -1446,8 +1446,14 @@
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'):