bulk-checkin: fix leaking state TODO
commitc81dcf630cec64d0042f08f7210300671ed5b926
authorPatrick Steinhardt <ps@pks.im>
Wed, 14 Aug 2024 06:52:03 +0000 (14 08:52 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 14 Aug 2024 17:07:57 +0000 (14 10:07 -0700)
tree1b9c4245155ba6f3d69f0406b369d88f9866448c
parent9ddd5f755d78dd2a3119b63d5f78ca93e4fd3eba
bulk-checkin: fix leaking state TODO

When flushing a bulk-checking to disk we also reset the `struct
bulk_checkin_packfile` state. But while we free some of its members,
others aren't being free'd, leading to memory leaks:

  - The temporary packfile name is not getting freed.

  - The `struct hashfile` only gets freed in case we end up calling
    `finalize_hashfile()`. There are code paths though where that is not
    the case, namely when nothing has been written. For this, we need to
    make `free_hashfile()` public.

Fix those leaks.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
bulk-checkin.c
csum-file.c
csum-file.h
t/t1050-large.sh