Save errno in handle_alias()
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Wed, 28 Jun 2006 10:45:27 +0000 (12:45 +0200)
committerJunio C Hamano <junkio@cox.net>
Wed, 28 Jun 2006 10:55:36 +0000 (03:55 -0700)
git.c:main() relies on the value of errno being set by the last attempt to
execute the command. However, if something goes awry in handle_alias(),
that assumption is wrong. So restore errno before returning from
handle_alias().

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
git.c

diff --git a/git.c b/git.c
index 159fec0..ca8961f 100644 (file)
--- a/git.c
+++ b/git.c
@@ -100,7 +100,7 @@ static int split_cmdline(char *cmdline, const char ***argv)
 
 static int handle_alias(int *argcp, const char ***argv)
 {
-       int nongit = 0, ret = 0;
+       int nongit = 0, ret = 0, saved_errno = errno;
        const char *subdir;
 
        subdir = setup_git_directory_gently(&nongit);
@@ -138,6 +138,8 @@ static int handle_alias(int *argcp, const char ***argv)
        if (subdir)
                chdir(subdir);
 
+       errno = saved_errno;
+
        return ret;
 }