aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJacob Keller <jacob.keller@gmail.com>2025-06-23 16:11:30 -0700
committerJunio C Hamano <gitster@pobox.com>2025-06-23 16:38:56 -0700
commit2084f119b4d8252116493336f597d205cfa8f0b8 (patch)
tree1da3bb90ca5b5e6ddb36a38adfc9bfd3d151c3a6
parentremote: remove branch->merge_name and fix branch_release() (diff)
downloadgit-2084f119b4d8252116493336f597d205cfa8f0b8.tar.gz
git-2084f119b4d8252116493336f597d205cfa8f0b8.zip
remote: fix tear down of struct remote
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>
-rw-r--r--remote.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/remote.c b/remote.c
index ee95126f3f..194bb44778 100644
--- 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);