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>
maint
Johannes Schindelin 2017-01-02 17:22:33 +01:00 committed by Junio C Hamano
parent e2b2d6a172
commit c9bb5d101c
1 changed files with 4 additions and 1 deletions

View File

@ -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)