aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-11-20 14:39:35 +0100
committerJunio C Hamano <gitster@pobox.com>2024-11-21 08:23:41 +0900
commit2b7706aae5b76653bdcb0787a5276a9a53460037 (patch)
tree1921a5a1ae481f9f0d9dcdaf0765b1e57c7759a0
parentcfb8a0da55fec9619e4e5b1e9b211ef85e3c9cb3 (diff)
downloadgit-2b7706aae5b76653bdcb0787a5276a9a53460037.tar.gz
bisect: fix leaking commit list items in `check_merge_base()`
While we free the result commit list at the end of `check_merge_base()`, we forget to free any items that we have already iterated over. Fix this by using a separate variable to iterate through them. This leak is exposed by t6030, but plugging it does not make the whole test suite pass. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--bisect.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/bisect.c b/bisect.c
index 04e9a63f11..12efcff2e3 100644
--- a/bisect.c
+++ b/bisect.c
@@ -851,8 +851,8 @@ static enum bisect_error check_merge_bases(int rev_nr, struct commit **rev, int
rev + 1, &result) < 0)
exit(128);
- for (; result; result = result->next) {
- const struct object_id *mb = &result->item->object.oid;
+ for (struct commit_list *l = result; l; l = l->next) {
+ const struct object_id *mb = &l->item->object.oid;
if (oideq(mb, current_bad_oid)) {
res = handle_bad_merge_base();
break;