]> Kevux Git Server - rit/commit
builtin/merge: release output buffer after performing merge
authorPatrick Steinhardt <ps@pks.im>
Tue, 5 Nov 2024 06:17:49 +0000 (07:17 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 5 Nov 2024 06:37:57 +0000 (22:37 -0800)
commitff67083ccd77dc80002751c0f81ac50e122abd6c
treecf5e4420cf5fd5280184afdb2544bb6f4fdf9a68
parent813b12b6f74d75ce5ad2e7453fb763a4db44bdf8
builtin/merge: release output buffer after performing merge

The `obuf` member of `struct merge_options` is used to buffer output in
some cases. In order to not discard its allocated memory we only release
its contents in `merge_finalize()` when we're not currently recursing
into a subtree.

This results in some situations where we seemingly do not release the
buffer reliably. We thus have calls to `strbuf_release()` for this
buffer scattered across the codebase. But we're missing one callsite in
git-merge(1), which causes a memory leak.

We should ideally refactor this interface so that callers don't have to
know about any such internals. But for now, paper over the issue by
adding one more `strbuf_release()` call.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/merge.c
t/t6424-merge-unrelated-index-changes.sh