forked from aniani/vim
Fix memory leak in :find completion. (Dominique Pelle)
This commit is contained in:
18
src/misc1.c
18
src/misc1.c
@@ -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);
|
||||||
|
Reference in New Issue
Block a user