Merge branch 'js/exec-path-coverity-workaround' into maint
authorJunio C Hamano <gitster@pobox.com>
Tue, 31 Jan 2017 21:32:10 +0000 (13:32 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 31 Jan 2017 21:32:10 +0000 (13:32 -0800)
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

1  2 
exec_cmd.c
diff --combined exec_cmd.c
index 19ac2146d0c49be8f5ef3739664dc3105544b4c2,31ceb3338334a412128f5f4750f832b110545cdf..fb94aeba9cef2893ea7173e5634640e596659474
@@@ -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)
  /* 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)