diff options
author | Martin Ågren <martin.agren@gmail.com> | 2017-11-05 21:24:31 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-11-06 10:15:29 +0900 |
commit | f4e45cb3eb6fad4570ff63eecb37bae8102992fc (patch) | |
tree | 6c5bcac21f03ec8d0af24dbd4a2704dcacd51c87 /bisect.c | |
parent | bisect: fix off-by-one error in `best_bisection_sorted()` (diff) | |
download | tgif-f4e45cb3eb6fad4570ff63eecb37bae8102992fc.tar.xz |
bisect: fix memory leak when returning best element
When `find_bisection()` returns a single list entry, it leaks the other
entries. Move the to-be-returned item to the front and free the
remainder.
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'bisect.c')
-rw-r--r-- | bisect.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -399,8 +399,12 @@ void find_bisection(struct commit_list **commit_list, int *reaches, /* Do the real work of finding bisection commit. */ best = do_find_bisection(list, nr, weights, find_all); if (best) { - if (!find_all) + if (!find_all) { + list->item = best->item; + free_commit_list(list->next); + best = list; best->next = NULL; + } *reaches = weight(best); } free(weights); |