diff options
Diffstat (limited to 'src/regexp.c')
-rw-r--r-- | src/regexp.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/regexp.c b/src/regexp.c index 112f75369e..ef3896c0a4 100644 --- a/src/regexp.c +++ b/src/regexp.c @@ -2556,7 +2556,7 @@ vim_regcomp(char_u *expr_arg, int re_flags) { regprog_T *prog = NULL; char_u *expr = expr_arg; - int save_called_emsg; + int called_emsg_before; regexp_engine = p_re; @@ -2592,8 +2592,7 @@ vim_regcomp(char_u *expr_arg, int re_flags) /* * First try the NFA engine, unless backtracking was requested. */ - save_called_emsg = called_emsg; - called_emsg = FALSE; + called_emsg_before = called_emsg; if (regexp_engine != BACKTRACKING_ENGINE) prog = nfa_regengine.regcomp(expr, re_flags + (regexp_engine == AUTOMATIC_ENGINE ? RE_AUTO : 0)); @@ -2624,13 +2623,13 @@ vim_regcomp(char_u *expr_arg, int re_flags) * but are still valid patterns, thus a retry should work. * But don't try if an error message was given. */ - if (regexp_engine == AUTOMATIC_ENGINE && !called_emsg) + if (regexp_engine == AUTOMATIC_ENGINE + && called_emsg == called_emsg_before) { regexp_engine = BACKTRACKING_ENGINE; prog = bt_regengine.regcomp(expr, re_flags); } } - called_emsg |= save_called_emsg; if (prog != NULL) { |