1
0
forked from aniani/vim

patch 8.0.0643: when a pattern search is slow Vim becomes unusable

Problem:    When 'hlsearch' is set and matching with the last search pattern
            is very slow, Vim becomes unusable.  Cannot quit search by
            pressing CTRL-C.
Solution:   When the search times out set a flag and don't try again.  Check
            for timeout and CTRL-C in NFA loop that adds states.
This commit is contained in:
Bram Moolenaar
2017-06-17 18:44:21 +02:00
parent 8cf91286ca
commit fbd0b0af68
19 changed files with 124 additions and 68 deletions

View File

@@ -7800,20 +7800,21 @@ next_search_hl(
int regprog_is_copy = (shl != &search_hl && cur != NULL
&& shl == &cur->hl
&& cur->match.regprog == cur->hl.rm.regprog);
int timed_out = FALSE;
nmatched = vim_regexec_multi(&shl->rm, win, shl->buf, lnum,
matchcol,
#ifdef FEAT_RELTIME
&(shl->tm)
&(shl->tm), &timed_out
#else
NULL
NULL, NULL
#endif
);
/* Copy the regprog, in case it got freed and recompiled. */
if (regprog_is_copy)
cur->match.regprog = cur->hl.rm.regprog;
if (called_emsg || got_int)
if (called_emsg || got_int || timed_out)
{
/* Error while handling regexp: stop using this regexp. */
if (shl == &search_hl)