checkout: don't crash on file checkout before running post-checkout hook
authorStephan Beyer <s-beyer@gmx.net>
Fri, 16 Jan 2009 19:09:58 +0000 (20:09 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sun, 18 Jan 2009 01:16:16 +0000 (17:16 -0800)
commit2292ce4785170d5502c4c9ea860bb73c6379f029
treeb764048f49ea7e79fad3cd712938bee8cbf6622f
parent7bbd8d6c139f163ee26b8416cd227408888f31c3
checkout: don't crash on file checkout before running post-checkout hook

In the case of

git init
echo exit >.git/hooks/post-checkout
chmod +x .git/hooks/post-checkout
touch foo
git add foo
rm foo
git checkout -- foo

git-checkout resulted in a Segmentation fault, because there is no new
branch set for the post-checkout hook.

This patch makes use of the null SHA as it is set for the old branch.

While at it, I removed the xstrdup() around the sha1_to_hex(...) calls
in builtin-checkout.c/post_checkout_hook() because sha1_to_hex()
uses four buffers for the hex-dumped SHA and we only need two.
(Duplicating one buffer is only needed if we need more than four.)

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-checkout.c