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,12 +54,14 @@ static void restore_env(int external_alias)
if (external_alias &&
!strcmp(env_names[i], GIT_PREFIX_ENVIRONMENT))
continue;
if (orig_env[i])
if (orig_env[i]) {
setenv(env_names[i], orig_env[i], 1);
else
free(orig_env[i]);
} else {
unsetenv(env_names[i]);
}
}
}
static void commit_pager_choice(void) {
switch (use_pager) {