1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-06-25 14:07:41 +02:00

Merge branch 'tr/perl-keep-stderr-open'

Closing (not redirecting to /dev/null) the standard error stream is
not a very smart thing to do.  Later open may return file
descriptor #2 for unrelated purpose, and error reporting code may
write into them.

* tr/perl-keep-stderr-open:
  t9700: do not close STDERR
  perl: redirect stderr to /dev/null instead of closing
This commit is contained in:
Junio C Hamano 2013-04-15 12:40:41 -07:00
commit d809d050ff
2 changed files with 5 additions and 4 deletions

View File

@ -1489,12 +1489,12 @@ sub _command_common_pipe {
if (not defined $pid) {
throw Error::Simple("open failed: $!");
} elsif ($pid == 0) {
if (defined $opts{STDERR}) {
close STDERR;
}
if ($opts{STDERR}) {
open (STDERR, '>&', $opts{STDERR})
or die "dup failed: $!";
} elsif (defined $opts{STDERR}) {
open (STDERR, '>', '/dev/null')
or die "opening /dev/null failed: $!";
}
_cmd_exec($self, $cmd, @args);
}

View File

@ -45,7 +45,8 @@ BEGIN
# Failure cases for config:
# Save and restore STDERR; we will probably extract this into a
# "dies_ok" method and possibly move the STDERR handling to Git.pm.
open our $tmpstderr, ">&STDERR" or die "cannot save STDERR"; close STDERR;
open our $tmpstderr, ">&STDERR" or die "cannot save STDERR";
open STDERR, ">", "/dev/null" or die "cannot redirect STDERR to /dev/null";
is($r->config("test.dupstring"), "value2", "config: multivar");
eval { $r->config_bool("test.boolother") };
ok($@, "config_bool: non-boolean values fail");