Re: [PATCH] perl: redirect stderr to /dev/null instead of closing
From: Eric Wong <hidden>
Date: 2016-06-15 22:56:37
Thomas Rast [off-list ref] wrote:
Closing stderr is a bad idea anyway: there is a very real chance that we print fatal error messages to some other file that just happens to be opened on the now-free FD 2. So let's not do that.
100% agreed. FD 0, 1, and 2 should not be closed, way too much potential for triggering rare bugs and interop issues like these to be worth it.
quoted hunk ↗ jump to hunk
--- a/perl/Git.pm +++ b/perl/Git.pm@@ -1495,6 +1495,9 @@ sub _command_common_pipe { 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); }
Perhaps we should also do the following:
--- a/perl/Git.pm
+++ b/perl/Git.pm@@ -1489,9 +1489,6 @@ 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: $!";