Mercurial > vim
diff src/regexp.c @ 18949:5c405689da3e v8.2.0035
patch 8.2.0035: saving and restoring called_emsg is clumsy
Commit: https://github.com/vim/vim/commit/53989554a44caca0964376d60297f08ec257c53c
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Dec 23 22:59:18 2019 +0100
patch 8.2.0035: saving and restoring called_emsg is clumsy
Problem: Saving and restoring called_emsg is clumsy.
Solution: Count the number of error messages.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 23 Dec 2019 23:00:03 +0100 |
parents | d34ec6fe207d |
children | 6fd567c927c0 |
line wrap: on
line diff
--- a/src/regexp.c +++ b/src/regexp.c @@ -2556,7 +2556,7 @@ vim_regcomp(char_u *expr_arg, int re_fla { 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_fla /* * 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_fla * 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) {