aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2025-07-01 14:17:25 -0700
committerJunio C Hamano <gitster@pobox.com>2025-07-01 14:17:25 -0700
commitb0e9d258654bb2c50f095ba05599d8badadb71a2 (patch)
tree532a5533b2b00747bc60f49bee090c7fa8ec1b59
parentsend-pack: clean up extra_have oid array (diff)
downloadgit-b0e9d258654bb2c50f095ba05599d8badadb71a2.tar.gz
git-b0e9d258654bb2c50f095ba05599d8badadb71a2.zip
send-pack: clean-up even when taking an early exit
Previous commit has plugged one leak in the normal code path, but there is an early exit that leaves without releasing any resources acquired in the function. Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/send-pack.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/builtin/send-pack.c b/builtin/send-pack.c
index b28da7ddd7..6ce9f6665a 100644
--- a/builtin/send-pack.c
+++ b/builtin/send-pack.c
@@ -305,9 +305,10 @@ int cmd_send_pack(int argc,
flags |= MATCH_REFS_MIRROR;
/* match them up */
- if (match_push_refs(local_refs, &remote_refs, &rs, flags))
- return -1;
-
+ if (match_push_refs(local_refs, &remote_refs, &rs, flags)) {
+ ret = -1;
+ goto cleanup;
+ }
if (!is_empty_cas(&cas))
apply_push_cas(&cas, remote, remote_refs);
@@ -340,6 +341,7 @@ int cmd_send_pack(int argc,
/* stable plumbing output; do not modify or localize */
fprintf(stderr, "Everything up-to-date\n");
+cleanup:
string_list_clear(&push_options, 0);
free_refs(remote_refs);
free_refs(local_refs);