From eb4c377af757baa899bb66137d53187fcea634db Mon Sep 17 00:00:00 2001 From: Father Chrysostomos Date: Fri, 13 Jan 2012 23:38:57 -0800 Subject: Make -T _ and -B _ always set PL_laststatval -T _ and -B _ always do another stat() on the previous file handle or filename, unless it is a handle that has been closed. Normally, the internal stat buffer, status, etc., are reset even for _. This happens even on a failed fstat(). -T HANDLE and -B HANDLE currently *do* reset the stat status (PL_laststatval) if there is no IO thingy, so having -T _ and -B _ not do that makes things needlessly inconsistent. --- t/op/filetest.t | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 't/op') 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), "", -- cgit v1.2.1