Avoid an uninitialized hash key in IPC::Open::spawn_with_handles().
authorNicholas Clark <nick@ccl4.org>
Sun, 5 Jun 2011 14:31:02 +0000 (16:31 +0200)
committerNicholas Clark <nick@ccl4.org>
Sat, 11 Jun 2011 06:48:14 +0000 (08:48 +0200)
ext/IPC-Open3/lib/IPC/Open3.pm
ext/IPC-Open3/t/fd.t

index 4396603..dc19cea 100644 (file)
@@ -396,7 +396,9 @@ sub spawn_with_handles {
            unless eval { $fd->{handle}->isa('IO::Handle') } ;
        # If some of handles to redirect-to coincide with handles to
        # redirect, we need to use saved variants:
-       $fd->{handle}->fdopen($saved{fileno $fd->{open_as}} || $fd->{open_as},
+       $fd->{handle}->fdopen(defined fileno $fd->{open_as}
+                             ? $saved{fileno $fd->{open_as}} || $fd->{open_as}
+                             : $fd->{open_as},
                              $fd->{mode});
     }
     unless ($^O eq 'MSWin32') {
index 7d4295e..1e7632f 100644 (file)
@@ -14,7 +14,7 @@ BEGIN {
 use strict;
 use warnings;
 
-plan 2;
+plan 1;
 
 # [perl #76474]
 {
@@ -23,12 +23,6 @@ plan 2;
      prog => 'open STDIN, q _Makefile_ or die $!; open3(q _<&1_, my $out, undef, $ENV{PERLEXE}, q _-e0_)',
      stderr => 1,
   );
-  {
-      local $::TODO = "Bogus warning in IPC::Open3::spawn_with_handles"
-         if $^O eq 'MSWin32';
-      $stderr =~ s/(Use of uninitialized value.*Open3\.pm line \d+\.)\n//;
-      is($1, undef, 'No bogus warning found');
-  }
 
   is $stderr, '',
    "dup STDOUT in a child process by using its file descriptor";