mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
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>
This commit is contained in:
committed by
Junio C Hamano
parent
9ddd5f755d
commit
c81dcf630c
10
csum-file.h
10
csum-file.h
@@ -46,6 +46,16 @@ int hashfile_truncate(struct hashfile *, struct hashfile_checkpoint *);
|
||||
struct hashfile *hashfd(int fd, const char *name);
|
||||
struct hashfile *hashfd_check(const char *name);
|
||||
struct hashfile *hashfd_throughput(int fd, const char *name, struct progress *tp);
|
||||
|
||||
/*
|
||||
* Free the hashfile without flushing its contents to disk. This only
|
||||
* needs to be called when not calling `finalize_hashfile()`.
|
||||
*/
|
||||
void free_hashfile(struct hashfile *f);
|
||||
|
||||
/*
|
||||
* Finalize the hashfile by flushing data to disk and free'ing it.
|
||||
*/
|
||||
int finalize_hashfile(struct hashfile *, unsigned char *, enum fsync_component, unsigned int);
|
||||
void hashwrite(struct hashfile *, const void *, unsigned int);
|
||||
void hashflush(struct hashfile *f);
|
||||
|
||||
Reference in New Issue
Block a user