1
0
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:
Bram Moolenaar
2020-06-04 20:56:09 +02:00
parent e52702f003
commit 442a85369f
4 changed files with 48 additions and 7 deletions

View File

@@ -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;