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:
@@ -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)
|
||||
|
Reference in New Issue
Block a user