Merge branch 'ab/do-not-hide-failures-in-git-dot-pm'
Git.pm update. * ab/do-not-hide-failures-in-git-dot-pm: perl Git.pm: don't ignore signalled failure in _cmd_close()
This commit is contained in:
commit
834625bd6f
21
perl/Git.pm
21
perl/Git.pm
@ -1686,6 +1686,16 @@ sub _setup_git_cmd_env {
|
|||||||
# by searching for it at proper places.
|
# by searching for it at proper places.
|
||||||
sub _execv_git_cmd { exec('git', @_); }
|
sub _execv_git_cmd { exec('git', @_); }
|
||||||
|
|
||||||
|
sub _is_sig {
|
||||||
|
my ($v, $n) = @_;
|
||||||
|
|
||||||
|
# We are avoiding a "use POSIX qw(SIGPIPE SIGABRT)" in the hot
|
||||||
|
# Git.pm codepath.
|
||||||
|
require POSIX;
|
||||||
|
no strict 'refs';
|
||||||
|
$v == *{"POSIX::$n"}->();
|
||||||
|
}
|
||||||
|
|
||||||
# Close pipe to a subprocess.
|
# Close pipe to a subprocess.
|
||||||
sub _cmd_close {
|
sub _cmd_close {
|
||||||
my $ctx = shift @_;
|
my $ctx = shift @_;
|
||||||
@ -1698,9 +1708,16 @@ sub _cmd_close {
|
|||||||
} elsif ($? >> 8) {
|
} elsif ($? >> 8) {
|
||||||
# The caller should pepper this.
|
# The caller should pepper this.
|
||||||
throw Git::Error::Command($ctx, $? >> 8);
|
throw Git::Error::Command($ctx, $? >> 8);
|
||||||
|
} elsif ($? & 127 && _is_sig($? & 127, "SIGPIPE")) {
|
||||||
|
# we might e.g. closed a live stream; the command
|
||||||
|
# dying of SIGPIPE would drive us here.
|
||||||
|
} elsif ($? & 127 && _is_sig($? & 127, "SIGABRT")) {
|
||||||
|
die sprintf('BUG?: got SIGABRT ($? = %d, $? & 127 = %d) when closing pipe',
|
||||||
|
$?, $? & 127);
|
||||||
|
} elsif ($? & 127) {
|
||||||
|
die sprintf('got signal ($? = %d, $? & 127 = %d) when closing pipe',
|
||||||
|
$?, $? & 127);
|
||||||
}
|
}
|
||||||
# else we might e.g. closed a live stream; the command
|
|
||||||
# dying of SIGPIPE would drive us here.
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
test_description='git svn rmdir'
|
test_description='git svn rmdir'
|
||||||
|
|
||||||
TEST_PASSES_SANITIZE_LEAK=true
|
|
||||||
. ./lib-git-svn.sh
|
. ./lib-git-svn.sh
|
||||||
|
|
||||||
test_expect_success 'initialize repo' '
|
test_expect_success 'initialize repo' '
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
test_description='git svn respects rewriteRoot during rebuild'
|
test_description='git svn respects rewriteRoot during rebuild'
|
||||||
|
|
||||||
TEST_PASSES_SANITIZE_LEAK=true
|
|
||||||
. ./lib-git-svn.sh
|
. ./lib-git-svn.sh
|
||||||
|
|
||||||
mkdir import
|
mkdir import
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
test_description='git svn partial-rebuild tests'
|
test_description='git svn partial-rebuild tests'
|
||||||
|
|
||||||
TEST_PASSES_SANITIZE_LEAK=true
|
|
||||||
. ./lib-git-svn.sh
|
. ./lib-git-svn.sh
|
||||||
|
|
||||||
test_expect_success 'initialize svnrepo' '
|
test_expect_success 'initialize svnrepo' '
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
test_description='git svn branch for subproject clones'
|
test_description='git svn branch for subproject clones'
|
||||||
|
|
||||||
TEST_PASSES_SANITIZE_LEAK=true
|
|
||||||
. ./lib-git-svn.sh
|
. ./lib-git-svn.sh
|
||||||
|
|
||||||
test_expect_success 'initialize svnrepo' '
|
test_expect_success 'initialize svnrepo' '
|
||||||
|
Loading…
Reference in New Issue
Block a user