Re: [PATCH] git.c: fix help.autocorrect after 57ea712 breaks it
From: Michael J Gruber <hidden>
Date: 2016-06-15 23:07:54
Nguyễn Thái Ngọc Duy venit, vidit, dixit 26.01.2016 14:26:
Commit 57ea712 (git.c: make sure we do not leak GIT_* to alias scripts - 2015-12-20) does not realize that handle_alias() can be called multiple times because of the forever loop in run_argv(). The commit breaks alias chains. Suppose you have an alias "abc" that resolves to another alias "def", which finally resolve to "git status". handle_alias() is called twice. save_env() and restore_env() are also called twice. But because of the check save_env_before_alias in save_env(), we save once while trying to restore twice. Consequences are left for the reader's imagination. Fortunately, you cannot make an alias of another alias. At least not yet. Unfortunately it can still happen with help.autocorrect, where your alias typo is treated as the first "alias", and it can be resolved to the second alias. Then boom. Make sure we call save_env() and restore_env() in pairs. While at there, set orig_cwd to NULL after freeing it for hygiene. Reported-by: Michael J Gruber <redacted> Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> ---
The patch fixes it for me, thanks! Michael