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 11:19:59 -0700 |
| commit | 6073b3b5c37716c50244d635e7c358f41f43e286 (patch) | |
| tree | 6d3663eeb79e31b729d5a51ef9028ccb58848d3e /builtin | |
| parent | http: refactor code to clarify memory ownership (diff) | |
| download | git-6073b3b5c37716c50244d635e7c358f41f43e286.tar.gz 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 'builtin')
| -rw-r--r-- | builtin/blame.c | 2 | ||||
| -rw-r--r-- | builtin/commit.c | 2 | ||||
| -rw-r--r-- | builtin/config.c | 2 | ||||
| -rw-r--r-- | builtin/log.c | 2 | ||||
| -rw-r--r-- | builtin/receive-pack.c | 4 |
5 files changed, 6 insertions, 6 deletions
diff --git a/builtin/blame.c b/builtin/blame.c index 6bc7aa6085..838cd476be 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -718,7 +718,7 @@ static int git_blame_config(const char *var, const char *value, return 0; } if (!strcmp(var, "blame.ignorerevsfile")) { - const char *str; + char *str; int ret; ret = git_config_pathname(&str, var, value); diff --git a/builtin/commit.c b/builtin/commit.c index 78bfae2164..1cc88e92bf 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -107,7 +107,7 @@ static enum { } commit_style; static const char *logfile, *force_author; -static const char *template_file; +static char *template_file; /* * The _message variables are commit names from which to take * the commit message and/or authorship. diff --git a/builtin/config.c b/builtin/config.c index 80aa9d8a66..cc343f55ca 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -277,7 +277,7 @@ static int format_config(struct strbuf *buf, const char *key_, else strbuf_addstr(buf, v ? "true" : "false"); } else if (type == TYPE_PATH) { - const char *v; + char *v; if (git_config_pathname(&v, key_, value_) < 0) return -1; strbuf_addstr(buf, v); diff --git a/builtin/log.c b/builtin/log.c index b17dd8b40a..a2f5845556 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -957,7 +957,7 @@ static int do_signoff; static enum auto_base_setting auto_base; static char *from; static const char *signature = git_version_string; -static const char *signature_file; +static char *signature_file; static enum cover_setting config_cover_letter; static const char *config_output_directory; static enum cover_from_description cover_from_description_mode = COVER_FROM_MESSAGE; diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index be8969a84a..56228ad314 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -168,13 +168,13 @@ static int receive_pack_config(const char *var, const char *value, } if (strcmp(var, "receive.fsck.skiplist") == 0) { - const char *path; + char *path; if (git_config_pathname(&path, var, value)) return 1; strbuf_addf(&fsck_msg_types, "%cskiplist=%s", fsck_msg_types.len ? ',' : '=', path); - free((char *)path); + free(path); return 0; } |
