summaryrefslogtreecommitdiffstats
path: root/src/regexp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/regexp.c')
-rw-r--r--src/regexp.c9
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)
{