pack-bitmap-write: deep-clear the `bb_commit` slab
commit6cdb67b97d188ea5583f33ac09f4649be5f9741f
authorTaylor Blau <me@ttaylorr.com>
Thu, 14 Dec 2023 22:23:42 +0000 (14 17:23 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Dec 2023 22:38:07 +0000 (14 14:38 -0800)
treed9c0cf5c7c9e317de216f40008cc7f3d469fd09a
parent66f0c71073ee5fe1c9d12d2952305a4793d7b43f
pack-bitmap-write: deep-clear the `bb_commit` slab

The `bb_commit` commit slab is used by the pack-bitmap-write machinery
to track various pieces of bookkeeping used to generate reachability
bitmaps.

Even though we clear the slab when freeing the bitmap_builder struct
(with `bitmap_builder_clear()`), there are still pointers which point to
locations in memory that have not yet been freed, resulting in a leak.

Plug the leak by introducing a suitable `free_fn` for the `struct
bb_commit` type, and make sure it is called on each member of the slab
via the `deep_clear_bb_data()` function.

Note that it is possible for both of the arguments to `bitmap_free()` to
be NULL, but `bitmap_free()` is a noop for NULL arguments, so it is OK
to pass them unconditionally.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
pack-bitmap-write.c