From: René Scharfe Date: Wed, 18 Mar 2026 12:45:15 GMT Subject: [PATCH] commit-reach: simplify cleanup of remaining bitmaps in ahead_behind() Message-ID: <06000e28-c1b1-472f-bd6b-367b6c8d208d@web.de> Use the deep clear function of the bit_arrays commit slab to free bitmaps of commits we didn't traverse. We don't care about their order anymore at this point, so we can bypass the prio_queue and its heap rebalancing logic. Note that bitmap_free() handles NULL pointers, so we don't have to check. Signed-off-by: René Scharfe --- commit-reach.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/commit-reach.c b/commit-reach.c index 9604bbdcce..a4fc41ff40 100644 --- a/commit-reach.c +++ b/commit-reach.c @@ -1047,6 +1047,11 @@ static void free_bit_array(struct commit *c) *bitmap = NULL; } +static void free_bitmap_pointer(struct bitmap **bitmap) +{ + bitmap_free(*bitmap); +} + void ahead_behind(struct repository *r, struct commit **commits, size_t commits_nr, struct ahead_behind_count *counts, size_t counts_nr) @@ -1117,11 +1122,7 @@ void ahead_behind(struct repository *r, /* STALE is used here, PARENT2 is used by insert_no_dup(). */ repo_clear_commit_marks(r, PARENT2 | STALE); - while (prio_queue_peek(&queue)) { - struct commit *c = prio_queue_get(&queue); - free_bit_array(c); - } - clear_bit_arrays(&bit_arrays); + deep_clear_bit_arrays(&bit_arrays, free_bitmap_pointer); clear_prio_queue(&queue); } -- 2.53.0