Re: [PATCH] git.c: fix help.autocorrect after 57ea712 breaks it
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 26, 2016, 17:44 UTC
- Message-ID
- <xmqqsi1kck18.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <56A7850D.6060805@drmicha.warpmail.net>
Michael J Gruber <git@drmicha.warpmail.net> writes:
Show 27 quoted lines
> 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 <git@drmicha.warpmail.net> >> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> >> --- > > The patch fixes it for me, thanks! > > Michael
Thanks for noticing, and thanks for describing the problem very clearly and fixing it quickly.