1
0
forked from aniani/vim

Fix memory leak in :find completion. (Dominique Pelle)

This commit is contained in:
Bram Moolenaar
2010-07-24 16:01:56 +02:00
parent 4f99eae082
commit b31e4383cd

View File

@@ -9306,7 +9306,7 @@ is_unique(maybe_unique, gap, i)
} }
/* /*
* Remove adjecent duplicate entries from "gap", which is a list of file names * Remove adjacent duplicate entries from "gap", which is a list of file names
* in allocated memory. * in allocated memory.
*/ */
static void static void
@@ -9354,7 +9354,7 @@ uniquefy_paths(gap, pattern)
/* /*
* We need to prepend a '*' at the beginning of file_pattern so that the * We need to prepend a '*' at the beginning of file_pattern so that the
* regex matches anywhere in the path. FIXME: is this valid for all * regex matches anywhere in the path. FIXME: is this valid for all
* possible pattern? * possible patterns?
*/ */
len = (int)STRLEN(pattern); len = (int)STRLEN(pattern);
file_pattern = alloc(len + 2); file_pattern = alloc(len + 2);
@@ -9363,14 +9363,13 @@ uniquefy_paths(gap, pattern)
STRCAT(file_pattern, pattern); STRCAT(file_pattern, pattern);
pat = file_pat_to_reg_pat(file_pattern, NULL, NULL, TRUE); pat = file_pat_to_reg_pat(file_pattern, NULL, NULL, TRUE);
vim_free(file_pattern); vim_free(file_pattern);
regmatch.rm_ic = TRUE; /* always ignore case */ if (pat == NULL)
return;
if (pat != NULL) regmatch.rm_ic = TRUE; /* always ignore case */
{
regmatch.regprog = vim_regcomp(pat, RE_MAGIC + RE_STRING); regmatch.regprog = vim_regcomp(pat, RE_MAGIC + RE_STRING);
vim_free(pat); vim_free(pat);
} if (regmatch.regprog == NULL)
if (pat == NULL || regmatch.regprog == NULL)
return; return;
for (i = 0; i < gap->ga_len; i++) for (i = 0; i < gap->ga_len; i++)
@@ -9391,6 +9390,7 @@ uniquefy_paths(gap, pattern)
} }
} }
vim_free(regmatch.regprog);
if (sort_again) if (sort_again)
{ {
sort_strings(fnames, gap->ga_len); sort_strings(fnames, gap->ga_len);