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>

Johannes Schindelin committed Jan 2, 2017 at 17:22 UTC c9bb5d101ca657fa466afa8c4368c43ea7b7aca8
1 file changed +4 -1
exec_cmd.c
+4 -1
@@ -69,6 +69,7 @@ void git_set_argv_exec_path(const char *exec_path)
69 const char *git_exec_path(void)
70 {
71 const char *env;
72 + static char *system_exec_path;
73
74 if (argv_exec_path)
75 return argv_exec_path;
@@ -78,7 +79,9 @@ const char *git_exec_path(void)
79 return env;
80 }
81
81 - return system_path(GIT_EXEC_PATH);
82 + if (!system_exec_path)
83 + system_exec_path = system_path(GIT_EXEC_PATH);
84 + return system_exec_path;
85 }
86
87 static void add_path(struct strbuf *out, const char *path)