diff src/regexp_nfa.c @ 11525:14b6b79d685b v8.0.0645

patch 8.0.0645: no error for illegal back reference in NFA engine commit https://github.com/vim/vim/commit/1ef9bbe215e13a273e74fccaddd8fc5a42c76b6e Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jun 17 20:08:20 2017 +0200 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)
author Christian Brabandt <cb@256bit.org>
date Sat, 17 Jun 2017 20:15:03 +0200
parents 578df034735d
children a941848d8c44
line wrap: on
line diff
--- 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'):