]> git.ipfire.org Git - thirdparty/git.git/blobdiff - diff.c
Merge branch 'gc/branch-recurse-submodules-fix'
[thirdparty/git.git] / diff.c
diff --git a/diff.c b/diff.c
index 7d5cfd325eacca2441a4aeeb5c90b6f619ef478a..ef7159968b68c43c361a4cacc4558e14fe82fd4f 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -800,6 +800,14 @@ static void append_emitted_diff_symbol(struct diff_options *o,
        f->line = e->line ? xmemdupz(e->line, e->len) : NULL;
 }
 
+static void free_emitted_diff_symbols(struct emitted_diff_symbols *e)
+{
+       if (!e)
+               return;
+       free(e->buf);
+       free(e);
+}
+
 struct moved_entry {
        const struct emitted_diff_symbol *es;
        struct moved_entry *next_line;
@@ -2227,7 +2235,7 @@ static void free_diff_words_data(struct emit_callback *ecbdata)
 {
        if (ecbdata->diff_words) {
                diff_words_flush(ecbdata);
-               free (ecbdata->diff_words->opt->emitted_symbols);
+               free_emitted_diff_symbols(ecbdata->diff_words->opt->emitted_symbols);
                free (ecbdata->diff_words->opt);
                free (ecbdata->diff_words->minus.text.ptr);
                free (ecbdata->diff_words->minus.orig);
@@ -5630,7 +5638,7 @@ static void prep_parse_options(struct diff_options *options)
                               N_("select files by diff type"),
                               PARSE_OPT_NONEG, diff_opt_diff_filter),
                { OPTION_CALLBACK, 0, "output", options, N_("<file>"),
-                 N_("Output to a specific file"),
+                 N_("output to a specific file"),
                  PARSE_OPT_NONEG, NULL, 0, diff_opt_output },
 
                OPT_END()
@@ -6452,6 +6460,8 @@ void diff_free(struct diff_options *options)
 
        diff_free_file(options);
        diff_free_ignore_regex(options);
+       clear_pathspec(&options->pathspec);
+       FREE_AND_NULL(options->parseopts);
 }
 
 void diff_flush(struct diff_options *options)