[PATCH] commit-reach: simplify cleanup of remaining bitmaps in ahead_behind()
- From
René Scharfe <l.s.r@web.de>
- Date
- Mar 18, 2026, 12:45 UTC
- 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 <l.s.r@web.de> --- 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