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>
This commit is contained in:
Johannes Schindelin 2017-01-02 17:22:33 +01:00 committed by Junio C Hamano
parent e2b2d6a172
commit c9bb5d101c

View File

@ -69,6 +69,7 @@ void git_set_argv_exec_path(const char *exec_path)
const char *git_exec_path(void) const char *git_exec_path(void)
{ {
const char *env; const char *env;
static char *system_exec_path;
if (argv_exec_path) if (argv_exec_path)
return argv_exec_path; return argv_exec_path;
@ -78,7 +79,9 @@ const char *git_exec_path(void)
return env; 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) static void add_path(struct strbuf *out, const char *path)