From b31e4383cd027e3aaf60451d9efaac7de7608b76 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar <Bram@vim.org> Date: Sat, 24 Jul 2010 16:01:56 +0200 Subject: [PATCH] Fix memory leak in :find completion. (Dominique Pelle) --- src/misc1.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/misc1.c b/src/misc1.c index 8e2c656e21..fb04fb6b72 100644 --- 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); - regmatch.rm_ic = TRUE; /* always ignore case */ + if (pat == NULL) + return; - if (pat != NULL) - { - regmatch.regprog = vim_regcomp(pat, RE_MAGIC + RE_STRING); - vim_free(pat); - } - if (pat == NULL || regmatch.regprog == NULL) + regmatch.rm_ic = TRUE; /* always ignore case */ + 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); -- GitLab