]> git.ipfire.org Git - thirdparty/git.git/commitdiff
remote: fix tear down of struct remote
authorJacob Keller <jacob.keller@gmail.com>
Mon, 23 Jun 2025 23:11:30 +0000 (16:11 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 23 Jun 2025 23:38:56 +0000 (16:38 -0700)
The remote_clear() function failed to free the remote->push and
remote->fetch refspec fields.

This should be caught by the leak sanitizer. However, for callers which
use ``the_repository``, the values never go out of scope and the
sanitizer doesn't complain.

A future change is going to add a caller of read_config() for a
submodule repository structure, which would result in the leak sanitizer
complaining.

Fix remote_clear(), updating it to properly call refspec_clear() for
both the push and fetch members.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
remote.c

index ee95126f3f20080a932b82314e8017e277569cc1..194bb447784ac1f71fb85a9fed3312e7458a9d5d 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -165,6 +165,9 @@ static void remote_clear(struct remote *remote)
        strvec_clear(&remote->url);
        strvec_clear(&remote->pushurl);
 
+       refspec_clear(&remote->push);
+       refspec_clear(&remote->fetch);
+
        free((char *)remote->receivepack);
        free((char *)remote->uploadpack);
        FREE_AND_NULL(remote->http_proxy);