diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2017-01-02 17:22:33 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-01-08 17:21:32 -0800 |
commit | c9bb5d101ca657fa466afa8c4368c43ea7b7aca8 (patch) | |
tree | 792043ca2143471e3640de078fa5098ca4a3618d /exec_cmd.c | |
parent | e2b2d6a172b76d44cb7b1ddb12ea5bfac9613a44 (diff) | |
download | git-c9bb5d101ca657fa466afa8c4368c43ea7b7aca8.tar.gz |
git_exec_path: avoid Coverity warning about unfree()d result
Technically, it is correct that git_exec_path() returns a possibly
malloc()ed string returned from system_path(), and it is sometimes
not allocated. Cache the result in a static variable and make sure
that we call system_path() only once, which plugs a potential leak.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'exec_cmd.c')
-rw-r--r-- | exec_cmd.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/exec_cmd.c b/exec_cmd.c index 9d5703a157..eae56fefba 100644 --- a/exec_cmd.c +++ b/exec_cmd.c @@ -69,6 +69,7 @@ void git_set_argv_exec_path(const char *exec_path) const char *git_exec_path(void) { const char *env; + static char *system_exec_path; if (argv_exec_path) return argv_exec_path; @@ -78,7 +79,9 @@ const char *git_exec_path(void) return env; } - return system_path(GIT_EXEC_PATH); + if (!system_exec_path) + system_exec_path = system_path(GIT_EXEC_PATH); + return system_exec_path; } static void add_path(struct strbuf *out, const char *path) |