reduce_heads: fix memory leaks

We currently have seven callers of `reduce_heads(foo)`. Six of them do
not use the original list `foo` again, and actually, all six of those
end up leaking it.

Introduce and use `reduce_heads_replace(&foo)` as a leak-free version of
`foo = reduce_heads(foo)` to fix several of these. Fix the remaining
leaks using `free_commit_list()`.

While we're here, document `reduce_heads()` and mark it as `extern`.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Martin Ågren
2017-11-07 21:39:45 +01:00
committed by Junio C Hamano
parent a452d0f4ba
commit 4da72644b7
7 changed files with 35 additions and 6 deletions

View File

@ -57,7 +57,7 @@ static int handle_independent(int count, const char **args)
for (i = count - 1; i >= 0; i--)
commit_list_insert(get_commit_reference(args[i]), &revs);
revs = reduce_heads(revs);
reduce_heads_replace(&revs);
if (!revs)
return 1;
@ -78,7 +78,9 @@ static int handle_octopus(int count, const char **args, int show_all)
for (i = count - 1; i >= 0; i--)
commit_list_insert(get_commit_reference(args[i]), &revs);
result = reduce_heads(get_octopus_merge_bases(revs));
result = get_octopus_merge_bases(revs);
free_commit_list(revs);
reduce_heads_replace(&result);
if (!result)
return 1;