diff options
Diffstat (limited to 'exec_cmd.c')
| -rw-r--r-- | exec_cmd.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/exec_cmd.c b/exec_cmd.c index 19ac2146d0..fb94aeba9c 100644 --- a/exec_cmd.c +++ b/exec_cmd.c @@ -64,17 +64,19 @@ void git_set_argv_exec_path(const char *exec_path)  /* 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)  | 
