diff options
author | Junio C Hamano <gitster@pobox.com> | 2021-02-23 03:12:43 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-02-23 03:12:43 +0300 |
commit | 45df6c4d756df25d04f82f4803923baaf0c12a33 (patch) | |
tree | b30ad9c606be7977d5dd5df0f35d91b1450aea55 /log-tree.c | |
parent | dcb11fc6225edbe2bd7af63eb550b739e7f4a074 (diff) | |
parent | c45dc9cf30a6f7f40adb3ea70dd2f2905ecd4afa (diff) |
Merge branch 'ab/diff-deferred-free'
A small memleak in "diff -I<regexp>" has been corrected.
* ab/diff-deferred-free:
diff: plug memory leak from regcomp() on {log,diff} -I
diff: add an API for deferred freeing
Diffstat (limited to 'log-tree.c')
-rw-r--r-- | log-tree.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/log-tree.c b/log-tree.c index 80b8a07ec4..4531cebfab 100644 --- a/log-tree.c +++ b/log-tree.c @@ -963,12 +963,14 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log int log_tree_commit(struct rev_info *opt, struct commit *commit) { struct log_info log; - int shown, close_file = opt->diffopt.close_file; + int shown; + /* maybe called by e.g. cmd_log_walk(), maybe stand-alone */ + int no_free = opt->diffopt.no_free; log.commit = commit; log.parent = NULL; opt->loginfo = &log; - opt->diffopt.close_file = 0; + opt->diffopt.no_free = 1; if (opt->line_level_traverse) return line_log_print(opt, commit); @@ -985,7 +987,7 @@ int log_tree_commit(struct rev_info *opt, struct commit *commit) fprintf(opt->diffopt.file, "\n%s\n", opt->break_bar); opt->loginfo = NULL; maybe_flush_or_die(opt->diffopt.file, "stdout"); - if (close_file) - fclose(opt->diffopt.file); + opt->diffopt.no_free = no_free; + diff_free(&opt->diffopt); return shown; } |