aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/regexp_nfa.c
diff options
context:
space:
mode:
authorBilly Su <g4691821@gmail.com>2019-03-02 12:38:36 +0800
committerBilly Su <g4691821@gmail.com>2019-03-07 23:48:53 +0800
commitfbd8209286373843b7e9b4151a1432fc4555484d (patch)
treeed434d5f07975fe4bc4b52ba401254e55b7c523d /src/nvim/regexp_nfa.c
parent570e41fc08ae80421c2458d90cd14d7c3ba65d76 (diff)
downloadrneovim-fbd8209286373843b7e9b4151a1432fc4555484d.tar.gz
rneovim-fbd8209286373843b7e9b4151a1432fc4555484d.tar.bz2
rneovim-fbd8209286373843b7e9b4151a1432fc4555484d.zip
vim-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 vim/vim#1774) https://github.com/vim/vim/commit/1ef9bbe215e13a273e74fccaddd8fc5a42c76b6e
Diffstat (limited to 'src/nvim/regexp_nfa.c')
-rw-r--r--src/nvim/regexp_nfa.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/nvim/regexp_nfa.c b/src/nvim/regexp_nfa.c
index 0df67336d3..c44e0c9979 100644
--- a/src/nvim/regexp_nfa.c
+++ b/src/nvim/regexp_nfa.c
@@ -1338,8 +1338,14 @@ static int 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'):