forked from aniani/vim
patch 8.2.0902: using searchcount() in 'statusline' causes an error
Problem: Using searchcount() in 'statusline' causes an error.
Solution: Avoid saving/restoring the search patten recursively.
(closes #6194)
This commit is contained in:
15
src/search.c
15
src/search.c
@@ -356,10 +356,9 @@ static int saved_no_hlsearch = 0;
|
||||
void
|
||||
save_last_search_pattern(void)
|
||||
{
|
||||
if (did_save_last_search_spat != 0)
|
||||
iemsg("did_save_last_search_spat is not zero");
|
||||
else
|
||||
++did_save_last_search_spat;
|
||||
if (++did_save_last_search_spat != 1)
|
||||
// nested call, nothing to do
|
||||
return;
|
||||
|
||||
saved_last_search_spat = spats[RE_SEARCH];
|
||||
if (spats[RE_SEARCH].pat != NULL)
|
||||
@@ -371,12 +370,14 @@ save_last_search_pattern(void)
|
||||
void
|
||||
restore_last_search_pattern(void)
|
||||
{
|
||||
if (did_save_last_search_spat != 1)
|
||||
if (--did_save_last_search_spat > 0)
|
||||
// nested call, nothing to do
|
||||
return;
|
||||
if (did_save_last_search_spat != 0)
|
||||
{
|
||||
iemsg("did_save_last_search_spat is not one");
|
||||
iemsg("restore_last_search_pattern() called more often than save_last_search_pattern()");
|
||||
return;
|
||||
}
|
||||
--did_save_last_search_spat;
|
||||
|
||||
vim_free(spats[RE_SEARCH].pat);
|
||||
spats[RE_SEARCH] = saved_last_search_spat;
|
||||
|
||||
Reference in New Issue
Block a user