urlmatch.c: add and use a *_release() function

Plug a memory leak in credential_apply_config() by adding and using a new urlmatch_config_release() function. This just does a string_list_clear() on the "vars" member. This finished up work on normalizing the init/free pattern in this API, started in 73ee449bbf2 (urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT, 2021-10-01). Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ævar Arnfjörð Bjarmason committed Mar 4, 2022 at 19:32 UTC a41e8e74674d53a46616b01f2c18e43c7f2f30a8
4 files changed +8 -1
builtin/config.c
+1 -1
@@ -612,7 +612,7 @@ static int get_urlmatch(const char *var, const char *url)
612
613 strbuf_release(&matched->value);
614 }
615 - string_list_clear(&config.vars, 1);
615 + urlmatch_config_release(&config);
616 string_list_clear(&values, 1);
617 free(config.url.url);
618
credential.c
+1
@@ -130,6 +130,7 @@ static void credential_apply_config(struct credential *c)
130 git_config(urlmatch_config_entry, &config);
131 string_list_clear(&config.vars, 1);
132 free(normalized_url);
133 + urlmatch_config_release(&config);
134 strbuf_release(&url);
135
136 c->configured = 1;
urlmatch.c
+5
@@ -611,3 +611,8 @@ int urlmatch_config_entry(const char *var, const char *value, void *cb)
611 strbuf_release(&synthkey);
612 return retval;
613 }
614 +
615 +void urlmatch_config_release(struct urlmatch_config *config)
616 +{
617 + string_list_clear(&config->vars, 1);
618 +}
urlmatch.h
+1
@@ -71,5 +71,6 @@ struct urlmatch_config {
71 }
72
73 int urlmatch_config_entry(const char *var, const char *value, void *cb);
74 +void urlmatch_config_release(struct urlmatch_config *config);
75
76 #endif /* URL_MATCH_H */