diff options
| author | Patrick Steinhardt <ps@pks.im> | 2024-11-20 14:39:35 +0100 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2024-11-21 08:23:41 +0900 |
| commit | 2b7706aae5b76653bdcb0787a5276a9a53460037 (patch) | |
| tree | 1921a5a1ae481f9f0d9dcdaf0765b1e57c7759a0 | |
| parent | cfb8a0da55fec9619e4e5b1e9b211ef85e3c9cb3 (diff) | |
| download | git-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.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -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; |
