0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.4732: duplicate code to free fuzzy matches

Problem:    Duplicate code to free fuzzy matches.
Solution:   Bring back fuzmatch_str_free().
This commit is contained in:
Bram Moolenaar
2022-04-10 18:09:06 +01:00
parent db0ea7f2b0
commit c6e0a5e98c
4 changed files with 21 additions and 11 deletions

View File

@@ -2877,13 +2877,7 @@ ExpandGeneric(
ga_clear_strings(&ga);
return FAIL;
}
for (i = 0; i < ga.ga_len; ++i)
{
fuzmatch = &((fuzmatch_str_T *)ga.ga_data)[i];
vim_free(fuzmatch->str);
}
ga_clear(&ga);
fuzmatch_str_free(ga.ga_data, ga.ga_len);
return FAIL;
}

View File

@@ -41,5 +41,6 @@ int fuzzy_match(char_u *str, char_u *pat_arg, int matchseq, int *outScore, int_u
void f_matchfuzzy(typval_T *argvars, typval_T *rettv);
void f_matchfuzzypos(typval_T *argvars, typval_T *rettv);
int fuzzy_match_str(char_u *str, char_u *pat);
void fuzmatch_str_free(fuzmatch_str_T *fuzmatch, int count);
int fuzzymatches_to_strmatches(fuzmatch_str_T *fuzmatch, char_u ***matches, int count, int funcsort);
/* vim: set ft=c : */

View File

@@ -5013,6 +5013,21 @@ fuzzy_match_str(char_u *str, char_u *pat)
return score;
}
/*
* Free an array of fuzzy string matches "fuzmatch[count]".
*/
void
fuzmatch_str_free(fuzmatch_str_T *fuzmatch, int count)
{
int i;
if (fuzmatch == NULL)
return;
for (i = 0; i < count; ++i)
vim_free(fuzmatch[i].str);
vim_free(fuzmatch);
}
/*
* Copy a list of fuzzy matches into a string list after sorting the matches by
* the fuzzy score. Frees the memory allocated for 'fuzmatch'.
@@ -5033,9 +5048,7 @@ fuzzymatches_to_strmatches(
*matches = ALLOC_MULT(char_u *, count);
if (*matches == NULL)
{
for (i = 0; i < count; i++)
vim_free(fuzmatch[i].str);
vim_free(fuzmatch);
fuzmatch_str_free(fuzmatch, count);
return FAIL;
}

View File

@@ -746,6 +746,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4732,
/**/
4731,
/**/