aboutsummaryrefslogtreecommitdiffstats
path: root/refs
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-02-08 06:26:14 +0100
committerJunio C Hamano <gitster@pobox.com>2024-02-07 21:30:43 -0800
commit8a0bebdeaec60623c8a791b197d574bdd031a452 (patch)
tree0fa18643b9709db8f32c1a7b9a2ec37aadea2565 /refs
parentc0350cb96465b152ce67ef381af058594713f99b (diff)
downloadgit-8a0bebdeaec60623c8a791b197d574bdd031a452.tar.gz
refs/reftable: fix leak when copying reflog fails
When copying a ref with the reftable backend we also copy the corresponding log records. When seeking the first log record that we're about to copy fails though we directly return from `write_copy_table()` without doing any cleanup, leaking several allocated data structures. Fix this by exiting via our common cleanup logic instead. Reported-by: Jeff King <peff@peff.net> via Coverity Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs')
-rw-r--r--refs/reftable-backend.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/refs/reftable-backend.c b/refs/reftable-backend.c
index 85214baa60..a14f2ad7f4 100644
--- a/refs/reftable-backend.c
+++ b/refs/reftable-backend.c
@@ -1503,7 +1503,7 @@ static int write_copy_table(struct reftable_writer *writer, void *cb_data)
*/
ret = reftable_merged_table_seek_log(mt, &it, arg->oldname);
if (ret < 0)
- return ret;
+ goto done;
while (1) {
ret = reftable_iterator_next_log(&it, &old_log);