Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2021-02-23 03:12:43 +0300
committerJunio C Hamano <gitster@pobox.com>2021-02-23 03:12:43 +0300
commit45df6c4d756df25d04f82f4803923baaf0c12a33 (patch)
treeb30ad9c606be7977d5dd5df0f35d91b1450aea55 /log-tree.c
parentdcb11fc6225edbe2bd7af63eb550b739e7f4a074 (diff)
parentc45dc9cf30a6f7f40adb3ea70dd2f2905ecd4afa (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.c10
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;
}