send-pack: free cas options before exit

The send-pack --force-with-lease option populates a push_cas_option
struct with allocated strings. Exiting without cleaning this up will
cause leak-checkers to complain.

We can fix this by calling clear_cas_option(), after making it publicly
available. Previously it was used only for resetting the list when we
saw --no-force-with-lease.

The git-push command has the same "leak", though in this case it won't
trigger a leak-checker since it stores the push_cas_option struct as a
global rather than on the stack (and is thus reachable even after main()
exits). I've added cleanup for it here anyway, though, as
future-proofing.

The leak is triggered by t5541 (it tests --force-with-lease over http,
which requires a separate send-pack process under the hood), but we
can't mark it as leak-free yet.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King
2024-09-24 17:55:39 -04:00
committed by Junio C Hamano
parent 753f6708d0
commit 05372c28be
4 changed files with 4 additions and 1 deletions

View File

@ -344,5 +344,6 @@ int cmd_send_pack(int argc,
free_refs(local_refs);
refspec_clear(&rs);
oid_array_clear(&shallow);
clear_cas_option(&cas);
return ret;
}