From: Junio C Hamano Date: Fri, 23 Aug 2024 16:02:33 +0000 (-0700) Subject: Merge branch 'ps/leakfixes-part-4' X-Git-Tag: v2.47.0-rc0~104 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1b6b2bfae582e1e5a9b9ad2ef15985f69ade0fce;p=thirdparty%2Fgit.git Merge branch 'ps/leakfixes-part-4' More leak fixes. * ps/leakfixes-part-4: (22 commits) builtin/diff: free symmetric diff members diff: free state populated via options builtin/log: fix leak when showing converted blob contents userdiff: fix leaking memory for configured diff drivers builtin/format-patch: fix various trivial memory leaks diff: fix leak when parsing invalid ignore regex option unpack-trees: clear index when not propagating it sequencer: release todo list on error paths merge-ort: unconditionally release attributes index builtin/fast-export: plug leaking tag names builtin/fast-export: fix leaking diff options builtin/fast-import: plug trivial memory leaks builtin/notes: fix leaking `struct notes_tree` when merging notes builtin/rebase: fix leaking `commit.gpgsign` value config: fix leaking comment character config submodule-config: fix leaking name entry when traversing submodules read-cache: fix leaking hashfile when writing index fails bulk-checkin: fix leaking state TODO object-name: fix leaking symlink paths in object context object-file: fix memory leak when reading corrupted headers ... --- 1b6b2bfae582e1e5a9b9ad2ef15985f69ade0fce diff --cc csum-file.h index 36c7c5585f,ca553eba17..7c73da0a40 --- a/csum-file.h +++ b/csum-file.h @@@ -46,8 -46,17 +46,18 @@@ int hashfile_truncate(struct hashfile * 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 discard_hashfile(struct hashfile *); void hashwrite(struct hashfile *, const void *, unsigned int); void hashflush(struct hashfile *f); void crc32_begin(struct hashfile *);