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);