]> git.ipfire.org Git - thirdparty/git.git/commit
builtin/fetch: avoid aborting closed reference transaction
authorJustin Tobler <jltobler@gmail.com>
Fri, 21 Mar 2025 00:44:37 +0000 (19:44 -0500)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Mar 2025 10:59:46 +0000 (03:59 -0700)
commitb9fadeead74df1f4fa4a4177e478903d63e600f5
tree38ce1c6045c2b6da6d82b10c6ecdfb2809058a5b
parente1fbebe347426ef7974dc2198f8a277b7c31c8fe
builtin/fetch: avoid aborting closed reference transaction

As part of the reference transaction commit phase, the transaction is
set to a closed state regardless of whether it was successful of not.
Attempting to abort a closed transaction via `ref_transaction_abort()`
results in a `BUG()`.

In c92abe71df (builtin/fetch: fix leaking transaction with `--atomic`,
2024-08-22), logic to free a transaction after the commit phase is moved
to the centralized exit path. In cases where the transaction commit
failed, this results in a closed transaction being aborted and signaling
a bug.

Free the transaction and set it to NULL when the commit fails. This
allows the exit path to correctly handle the error without attempting to
abort the transaction.

Signed-off-by: Justin Tobler <jltobler@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/fetch.c
t/t5510-fetch.sh