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 /config.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 'config.c')
-rw-r--r-- | config.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -1346,7 +1346,7 @@ int git_config_string(const char **dest, const char *var, const char *value) return 0; } -int git_config_pathname(const char **dest, const char *var, const char *value) +int git_config_pathname(char **dest, const char *var, const char *value) { if (!value) return config_error_nonbool(var); @@ -1597,7 +1597,7 @@ static int git_default_core_config(const char *var, const char *value, return git_config_string(&askpass_program, var, value); if (!strcmp(var, "core.excludesfile")) { - free((char *)excludes_file); + free(excludes_file); return git_config_pathname(&excludes_file, var, value); } @@ -2494,7 +2494,7 @@ int git_configset_get_maybe_bool(struct config_set *set, const char *key, int *d return 1; } -int git_configset_get_pathname(struct config_set *set, const char *key, const char **dest) +int git_configset_get_pathname(struct config_set *set, const char *key, char **dest) { const char *value; if (!git_configset_get_value(set, key, &value, NULL)) @@ -2639,7 +2639,7 @@ int repo_config_get_maybe_bool(struct repository *repo, } int repo_config_get_pathname(struct repository *repo, - const char *key, const char **dest) + const char *key, char **dest) { int ret; git_config_check_init(repo); @@ -2738,7 +2738,7 @@ int git_config_get_maybe_bool(const char *key, int *dest) return repo_config_get_maybe_bool(the_repository, key, dest); } -int git_config_get_pathname(const char *key, const char **dest) +int git_config_get_pathname(const char *key, char **dest) { return repo_config_get_pathname(the_repository, key, dest); } |