restore_env(): free the saved environment variable once we are done

Just like we free orig_cwd, which is the value of the original
working directory saved in save_env_before_alias(), once we are
done with it, the contents of orig_env[] array, saved in the
save_env_before_alias() function should be freed; otherwise,
the second and subsequent calls to save/restore pair will leak
the memory allocated in save_env_before_alias().

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2016-02-02 15:42:59 -08:00
parent 441981bc85
commit 8384c139cb

6
git.c
View File

@ -54,11 +54,13 @@ static void restore_env(int external_alias)
if (external_alias && if (external_alias &&
!strcmp(env_names[i], GIT_PREFIX_ENVIRONMENT)) !strcmp(env_names[i], GIT_PREFIX_ENVIRONMENT))
continue; continue;
if (orig_env[i]) if (orig_env[i]) {
setenv(env_names[i], orig_env[i], 1); setenv(env_names[i], orig_env[i], 1);
else free(orig_env[i]);
} else {
unsetenv(env_names[i]); unsetenv(env_names[i]);
} }
}
} }
static void commit_pager_choice(void) { static void commit_pager_choice(void) {