]> git.ipfire.org Git - thirdparty/git.git/blobdiff - grep.c
grep API: plug memory leaks by freeing "header_list"
[thirdparty/git.git] / grep.c
diff --git a/grep.c b/grep.c
index 1687f65b64fdf6a229a1ab2e37d7c7ac8955a5b6..92ece4b7fa34a3ffb2a0c61b973b7cac33aa5b35 100644 (file)
--- a/grep.c
+++ b/grep.c
@@ -769,11 +769,11 @@ static void free_pattern_expr(struct grep_expr *x)
        free(x);
 }
 
-void free_grep_patterns(struct grep_opt *opt)
+static void free_grep_pat(struct grep_pat *pattern)
 {
        struct grep_pat *p, *n;
 
-       for (p = opt->pattern_list; p; p = n) {
+       for (p = pattern; p; p = n) {
                n = p->next;
                switch (p->token) {
                case GREP_PATTERN: /* atom */
@@ -790,10 +790,15 @@ void free_grep_patterns(struct grep_opt *opt)
                }
                free(p);
        }
+}
 
-       if (!opt->pattern_expression)
-               return;
-       free_pattern_expr(opt->pattern_expression);
+void free_grep_patterns(struct grep_opt *opt)
+{
+       free_grep_pat(opt->pattern_list);
+       free_grep_pat(opt->header_list);
+
+       if (opt->pattern_expression)
+               free_pattern_expr(opt->pattern_expression);
 }
 
 static const char *end_of_line(const char *cp, unsigned long *left)