summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>2006-06-28 10:45:27 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-06-28 10:55:36 (GMT)
commit47e5c0ca2cabb406518dda5c09432dc996f7ef2b (patch)
tree933006abefab3e5ccd5cacc995e02d1791899d14
parentf0ef05967f3b261fb16f5fdea6dd104c9bdb4c8c (diff)
downloadgit-47e5c0ca2cabb406518dda5c09432dc996f7ef2b.zip
git-47e5c0ca2cabb406518dda5c09432dc996f7ef2b.tar.gz
git-47e5c0ca2cabb406518dda5c09432dc996f7ef2b.tar.bz2
Save errno in handle_alias()
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>
-rw-r--r--git.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/git.c b/git.c
index 159fec0..ca8961f 100644
--- 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;
}