From 081eb72a80afd83398465382171765bdeaf6dba5 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sat, 28 May 2022 19:26:19 +0800 Subject: [PATCH] refactor(regexp_nfa.c): match where Vim calls fopen() (#18778) --- src/nvim/regexp_nfa.c | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/nvim/regexp_nfa.c b/src/nvim/regexp_nfa.c index d867b5db95..1e8204085c 100644 --- a/src/nvim/regexp_nfa.c +++ b/src/nvim/regexp_nfa.c @@ -5948,6 +5948,16 @@ static int nfa_regmatch(nfa_regprog_T *prog, nfa_state_T *start, regsubs_T *subm int add_off = 0; int toplevel = start->c == NFA_MOPEN; regsubs_T *r; + // Some patterns may take a long time to match, especially when using + // recursive_regmatch(). Allow interrupting them with CTRL-C. + fast_breakcheck(); + if (got_int) { + return false; + } + if (nfa_did_time_out()) { + return false; + } + #ifdef NFA_REGEXP_DEBUG_LOG FILE *debug = fopen(NFA_REGEXP_DEBUG_LOG, "a"); @@ -5956,22 +5966,6 @@ static int nfa_regmatch(nfa_regprog_T *prog, nfa_state_T *start, regsubs_T *subm return false; } #endif - // Some patterns may take a long time to match, especially when using - // recursive_regmatch(). Allow interrupting them with CTRL-C. - fast_breakcheck(); - if (got_int) { -#ifdef NFA_REGEXP_DEBUG_LOG - fclose(debug); -#endif - return false; - } - if (nfa_did_time_out()) { -#ifdef NFA_REGEXP_DEBUG_LOG - fclose(debug); -#endif - return false; - } - nfa_match = false; // Allocate memory for the lists of nodes.