[perl #71002] stat() on unopened fh _
authorFather Chrysostomos <sprout@cpan.org>
Fri, 20 Jan 2012 20:55:17 +0000 (12:55 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Fri, 20 Jan 2012 22:49:08 +0000 (14:49 -0800)
stat _ was producing an erroneous warning about an unopened filehandle
with _.  But _ isn’t a real filehandle and is special-cased, so it
shouldn’t warn.

See also commit 8080e3c8.

pp_sys.c
t/op/stat.t

index 0a1b1dc..246c9ad 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -2796,10 +2796,10 @@ PP(pp_stat)
                         PL_laststatval = -1;
                     }
             }
+           if (PL_laststatval < 0 && !havefp) report_evil_fh(gv);
         }
 
        if (PL_laststatval < 0) {
-           if (!havefp) report_evil_fh(gv);
            max = 0;
        }
     }
index 4f5e36e..df31a38 100644 (file)
@@ -20,7 +20,7 @@ if(eval {require File::Spec; 1}) {
 }
 
 
-plan tests => 112;
+plan tests => 113;
 
 my $Perl = which_perl();
 
@@ -587,6 +587,16 @@ SKIP: {
     }
 }
 
+# [perl #71002]
+{
+    local $^W = 1;
+    my $w;
+    local $SIG{__WARN__} = sub { warn shift; ++$w };
+    stat 'prepeinamehyparcheiarcheiometoonomaavto';
+    stat _;
+    is $w, undef, 'no unopened warning from stat _';
+}
+
 END {
     chmod 0666, $tmpfile;
     unlink_all $tmpfile;