From: Junio C Hamano Date: Tue, 31 Jan 2017 21:14:57 +0000 (-0800) Subject: Merge branch 'js/exec-path-coverity-workaround' X-Git-Tag: v2.12.0-rc0~41 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/e8272fd5fbb4f3a6d264fe0721247efe08aada8f?hp=-c Merge branch 'js/exec-path-coverity-workaround' Code cleanup. * js/exec-path-coverity-workaround: git_exec_path: do not return the result of getenv() git_exec_path: avoid Coverity warning about unfree()d result --- e8272fd5fbb4f3a6d264fe0721247efe08aada8f diff --combined exec_cmd.c index 19ac2146d0,31ceb33383..fb94aeba9c --- a/exec_cmd.c +++ b/exec_cmd.c @@@ -38,17 -38,21 +38,17 @@@ char *system_path(const char *path return strbuf_detach(&d, NULL); } -const char *git_extract_argv0_path(const char *argv0) +void git_extract_argv0_path(const char *argv0) { const char *slash; if (!argv0 || !*argv0) - return NULL; + return; slash = find_last_dir_sep(argv0); - if (slash) { + if (slash) argv0_path = xstrndup(argv0, slash - argv0); - return slash + 1; - } - - return argv0; } void git_set_argv_exec_path(const char *exec_path) @@@ -64,17 -68,19 +64,19 @@@ /* Returns the highest-priority, location to look for git programs. */ const char *git_exec_path(void) { - const char *env; + static char *cached_exec_path; if (argv_exec_path) return argv_exec_path; - env = getenv(EXEC_PATH_ENVIRONMENT); - if (env && *env) { - return env; + if (!cached_exec_path) { + const char *env = getenv(EXEC_PATH_ENVIRONMENT); + if (env && *env) + cached_exec_path = xstrdup(env); + else + cached_exec_path = system_path(GIT_EXEC_PATH); } - - return system_path(GIT_EXEC_PATH); + return cached_exec_path; } static void add_path(struct strbuf *out, const char *path)