Problem: Duplicate code to free fuzzy matches.
Solution: Bring back fuzmatch_str_free().
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;
}
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);
-int fuzzymatches_to_strmatches(fuzmatch_str_T *fuzmatch, char_u ***matches, int count, int funcsort);
+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 : */
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'.
*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;
}
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 4732,
/**/
4731,
/**/