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:
commit
d809d050ff
@ -1489,12 +1489,12 @@ sub _command_common_pipe {
|
|||||||
if (not defined $pid) {
|
if (not defined $pid) {
|
||||||
throw Error::Simple("open failed: $!");
|
throw Error::Simple("open failed: $!");
|
||||||
} elsif ($pid == 0) {
|
} elsif ($pid == 0) {
|
||||||
if (defined $opts{STDERR}) {
|
|
||||||
close STDERR;
|
|
||||||
}
|
|
||||||
if ($opts{STDERR}) {
|
if ($opts{STDERR}) {
|
||||||
open (STDERR, '>&', $opts{STDERR})
|
open (STDERR, '>&', $opts{STDERR})
|
||||||
or die "dup failed: $!";
|
or die "dup failed: $!";
|
||||||
|
} elsif (defined $opts{STDERR}) {
|
||||||
|
open (STDERR, '>', '/dev/null')
|
||||||
|
or die "opening /dev/null failed: $!";
|
||||||
}
|
}
|
||||||
_cmd_exec($self, $cmd, @args);
|
_cmd_exec($self, $cmd, @args);
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,8 @@ is($r->get_color("color.test.slot1", "red"), $ansi_green, "get_color");
|
|||||||
# Failure cases for config:
|
# Failure cases for config:
|
||||||
# Save and restore STDERR; we will probably extract this into a
|
# Save and restore STDERR; we will probably extract this into a
|
||||||
# "dies_ok" method and possibly move the STDERR handling to Git.pm.
|
# "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");
|
is($r->config("test.dupstring"), "value2", "config: multivar");
|
||||||
eval { $r->config_bool("test.boolother") };
|
eval { $r->config_bool("test.boolother") };
|
||||||
ok($@, "config_bool: non-boolean values fail");
|
ok($@, "config_bool: non-boolean values fail");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user