Mercurial > vim
changeset 2387:797f7b467b03 vim73
Fix memory leak in :find completion. (Dominique Pelle)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Sat, 24 Jul 2010 16:01:56 +0200 |
parents | fb8cce4174f0 |
children | 06d77ed24f33 |
files | src/misc1.c |
diffstat | 1 files changed, 9 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/misc1.c +++ b/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. */ static void @@ -9354,7 +9354,7 @@ uniquefy_paths(gap, pattern) /* * 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 - * possible pattern? + * possible patterns? */ len = (int)STRLEN(pattern); file_pattern = alloc(len + 2); @@ -9363,14 +9363,13 @@ uniquefy_paths(gap, pattern) STRCAT(file_pattern, pattern); pat = file_pat_to_reg_pat(file_pattern, NULL, NULL, TRUE); vim_free(file_pattern); + if (pat == NULL) + return; + regmatch.rm_ic = TRUE; /* always ignore case */ - - if (pat != NULL) - { - regmatch.regprog = vim_regcomp(pat, RE_MAGIC + RE_STRING); - vim_free(pat); - } - if (pat == NULL || regmatch.regprog == NULL) + regmatch.regprog = vim_regcomp(pat, RE_MAGIC + RE_STRING); + vim_free(pat); + if (regmatch.regprog == NULL) return; for (i = 0; i < gap->ga_len; i++) @@ -9391,6 +9390,7 @@ uniquefy_paths(gap, pattern) } } + vim_free(regmatch.regprog); if (sort_again) { sort_strings(fnames, gap->ga_len);