Browse Source

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()
maint
Junio C Hamano 3 years ago
parent
commit
834625bd6f
  1. 21
      perl/Git.pm
  2. 1
      t/t9102-git-svn-deep-rmdir.sh
  3. 1
      t/t9123-git-svn-rebuild-with-rewriteroot.sh
  4. 1
      t/t9128-git-svn-cmd-branch.sh
  5. 1
      t/t9167-git-svn-cmd-branch-subproject.sh

21
perl/Git.pm

@ -1686,6 +1686,16 @@ sub _setup_git_cmd_env { @@ -1686,6 +1686,16 @@ sub _setup_git_cmd_env {
# by searching for it at proper places.
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.
sub _cmd_close {
my $ctx = shift @_;
@ -1698,9 +1708,16 @@ sub _cmd_close { @@ -1698,9 +1708,16 @@ sub _cmd_close {
} elsif ($? >> 8) {
# The caller should pepper this.
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
t/t9102-git-svn-deep-rmdir.sh

@ -1,7 +1,6 @@ @@ -1,7 +1,6 @@
#!/bin/sh
test_description='git svn rmdir'

TEST_PASSES_SANITIZE_LEAK=true
. ./lib-git-svn.sh

test_expect_success 'initialize repo' '

1
t/t9123-git-svn-rebuild-with-rewriteroot.sh

@ -5,7 +5,6 @@ @@ -5,7 +5,6 @@

test_description='git svn respects rewriteRoot during rebuild'

TEST_PASSES_SANITIZE_LEAK=true
. ./lib-git-svn.sh

mkdir import

1
t/t9128-git-svn-cmd-branch.sh

@ -5,7 +5,6 @@ @@ -5,7 +5,6 @@

test_description='git svn partial-rebuild tests'

TEST_PASSES_SANITIZE_LEAK=true
. ./lib-git-svn.sh

test_expect_success 'initialize svnrepo' '

1
t/t9167-git-svn-cmd-branch-subproject.sh

@ -5,7 +5,6 @@ @@ -5,7 +5,6 @@

test_description='git svn branch for subproject clones'

TEST_PASSES_SANITIZE_LEAK=true
. ./lib-git-svn.sh

test_expect_success 'initialize svnrepo' '

Loading…
Cancel
Save