diff options
author | Patrick Steinhardt <ps@pks.im> | 2024-05-27 13:46:15 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2024-05-27 20:19:59 +0200 |
commit | 6073b3b5c37716c50244d635e7c358f41f43e286 (patch) | |
tree | 6d3663eeb79e31b729d5a51ef9028ccb58848d3e /setup.c | |
parent | http: refactor code to clarify memory ownership (diff) | |
download | git-6073b3b5c37716c50244d635e7c358f41f43e286.tar.xz git-6073b3b5c37716c50244d635e7c358f41f43e286.zip |
config: clarify memory ownership in `git_config_pathname()`
The out parameter of `git_config_pathname()` is a `const char **` even
though we transfer ownership of memory to the caller. This is quite
misleading and has led to many memory leaks all over the place. Adapt
the parameter to instead be `char **`.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'setup.c')
-rw-r--r-- | setup.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -1177,13 +1177,13 @@ static int safe_directory_cb(const char *key, const char *value, } else if (!strcmp(value, "*")) { data->is_safe = 1; } else { - const char *interpolated = NULL; + char *interpolated = NULL; if (!git_config_pathname(&interpolated, key, value) && !fspathcmp(data->path, interpolated ? interpolated : value)) data->is_safe = 1; - free((char *)interpolated); + free(interpolated); } return 0; @@ -1822,7 +1822,7 @@ static int template_dir_cb(const char *key, const char *value, char *path = NULL; FREE_AND_NULL(data->path); - if (!git_config_pathname((const char **)&path, key, value)) + if (!git_config_pathname(&path, key, value)) data->path = path ? path : xstrdup(value); } |