summaryrefslogtreecommitdiff
path: root/transport.h
diff options
context:
space:
mode:
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>2022-02-05 00:08:14 (GMT)
committerJunio C Hamano <gitster@pobox.com>2022-02-07 02:02:34 (GMT)
commitf36d4f8316ac567bd3bd0de3c051f2cd8ae2444b (patch)
tree0ac9ac390046bb4ce4158e89483cfd4ff1e69cbf /transport.h
parent38062e73e009f27ea192d50481fcb5e7b0e9d6eb (diff)
downloadgit-f36d4f8316ac567bd3bd0de3c051f2cd8ae2444b.zip
git-f36d4f8316ac567bd3bd0de3c051f2cd8ae2444b.tar.gz
git-f36d4f8316ac567bd3bd0de3c051f2cd8ae2444b.tar.bz2
ls-remote & transport API: release "struct transport_ls_refs_options"
Fix a memory leak in codepaths that use the "struct transport_ls_refs_options" API. Since the introduction of the struct in 39835409d10 (connect, transport: encapsulate arg in struct, 2021-02-05) the caller has been responsible for freeing it. That commit in turn migrated code originally added in 402c47d9391 (clone: send ref-prefixes when using protocol v2, 2018-07-20) and b4be74105fe (ls-remote: pass ref prefixes when requesting a remote's refs, 2018-03-15). Only some of those codepaths were releasing the allocated resources of the struct, now all of them will. Mark the "t/t5511-refspec.sh" test as passing when git is compiled with SANITIZE=leak. They'll now be listed as running under the "GIT_TEST_PASSING_SANITIZE_LEAK=true" test mode (the "linux-leaks" CI target). Previously 24/47 tests would fail. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'transport.h')
-rw-r--r--transport.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/transport.h b/transport.h
index 3f16e50..a0bc6a1 100644
--- a/transport.h
+++ b/transport.h
@@ -257,15 +257,19 @@ struct transport_ls_refs_options {
/*
* If unborn_head_target is not NULL, and the remote reports HEAD as
* pointing to an unborn branch, transport_get_remote_refs() stores the
- * unborn branch in unborn_head_target. It should be freed by the
- * caller.
+ * unborn branch in unborn_head_target.
*/
- char *unborn_head_target;
+ const char *unborn_head_target;
};
#define TRANSPORT_LS_REFS_OPTIONS_INIT { \
.ref_prefixes = STRVEC_INIT, \
}
+/**
+ * Release the "struct transport_ls_refs_options".
+ */
+void transport_ls_refs_options_release(struct transport_ls_refs_options *opts);
+
/*
* Retrieve refs from a remote.
*/