diff options
-rw-r--r-- | pp_sys.c | 2 | ||||
-rw-r--r-- | t/op/filetest.t | 10 |
2 files changed, 9 insertions, 3 deletions
@@ -3329,10 +3329,10 @@ PP(pp_fttext) } else { PL_statgv = gv; - PL_laststatval = -1; sv_setpvs(PL_statname, ""); io = GvIO(PL_statgv); } + PL_laststatval = -1; if (io && IoIFP(io)) { if (! PerlIO_has_base(IoIFP(io))) DIE(aTHX_ "-T and -B not implemented on filehandles"); diff --git a/t/op/filetest.t b/t/op/filetest.t index cf7a02dae4..65d914781a 100644 --- a/t/op/filetest.t +++ b/t/op/filetest.t @@ -10,7 +10,7 @@ BEGIN { } use Config; -plan(tests => 42 + 27*14); +plan(tests => 43 + 27*14); ok( -d 'op' ); ok( -f 'TEST' ); @@ -253,7 +253,7 @@ for my $op (split //, "rwxoRWXOezsfdlpSbctugkTMBAC") { my $Perl = which_perl(); SKIP: { - skip "no -T on filehandles", 5 unless eval { -T STDERR; 1 }; + skip "no -T on filehandles", 6 unless eval { -T STDERR; 1 }; # Test that -T HANDLE sets the last stat type -l "perl.c"; # last stat type is now lstat @@ -287,6 +287,12 @@ SKIP: { # and after -r $ioref -r *$fh{IO}; ok -T _, '-T _ works after -r $ioref'; + + # -T _ on closed filehandle should still reset stat info + stat $fh; + close $fh; + -T _; + ok !stat _, '-T _ on closed filehandle resets stat info'; } is runperl(prog => '-T _', switches => ['-w'], stderr => 1), "", |