diff options
author | Abhijit Menon-Sen <ams@toroid.org> | 2008-08-04 13:38:27 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-08-05 06:51:17 +0200 |
commit | 108c2aaf7984081daa6aed6d3947c7c0952216c2 (patch) | |
tree | 659dc0c3bbab67fac09d5263a93327c4de0f245d /perl | |
parent | bash completion: Add completion for 'git grep' (diff) | |
download | git-108c2aaf7984081daa6aed6d3947c7c0952216c2.tar.xz git-108c2aaf7984081daa6aed6d3947c7c0952216c2.zip |
Git.pm: localise $? in command_close_bidi_pipe()
Git::DESTROY calls _close_cat_blob and _close_hash_and_insert_object,
which in turn call command_close_bidi_pipe, which calls waitpid, which
alters $?. If this happens during global destruction, it may alter the
program's exit status unexpectedly. Making $? local to the function
solves the problem.
(The problem was discovered due to a failure of test #8 in
t9106-git-svn-commit-diff-clobber.sh.)
Signed-off-by: Abhijit Menon-Sen <ams@toroid.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'perl')
-rw-r--r-- | perl/Git.pm | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/perl/Git.pm b/perl/Git.pm index 087d3d0e82..faaa19f62e 100644 --- a/perl/Git.pm +++ b/perl/Git.pm @@ -417,6 +417,7 @@ have more complicated structure. =cut sub command_close_bidi_pipe { + local $?; my ($pid, $in, $out, $ctx) = @_; foreach my $fh ($in, $out) { unless (close $fh) { |