From: Gurusamy Sarathy Date: Tue, 13 May 2003 13:08:47 +0000 (+0000) Subject: the \do {local *FH} trick in Tie::File was really only needed X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=e0cf91d56b571fae04d6e52c0045b5e6dc4f5eae;p=p5sagit%2Fp5-mst-13.2.git the \do {local *FH} trick in Tie::File was really only needed on 5.005 and earlier, since later versions can autovivify the handle however, a search in the p5p archives reveals the trick doesn't fully work in the versions it is needed in, so use the more standard Symbol::gensym() way p4raw-id: //depot/perl@19511 --- diff --git a/lib/Tie/File.pm b/lib/Tie/File.pm index 90be50f..c1f3be3 100644 --- a/lib/Tie/File.pm +++ b/lib/Tie/File.pm @@ -94,7 +94,11 @@ sub TIEARRAY { } elsif (ref $file) { croak "usage: tie \@array, $pack, filename, [option => value]..."; } else { - $fh = \do { local *FH }; # only works in 5.005 and later + if ($] < 5.006) { + # perl 5.005 and earlier don't autovivify filehandles + require Symbol; + $fh = Symbol::gensym(); + } sysopen $fh, $file, $opts{mode}, 0666 or return; binmode $fh; ++$opts{ourfh}; @@ -411,14 +415,6 @@ sub DESTROY { if ($self->{fh} and $self->{ourfh}) { delete $self->{ourfh}; close delete $self->{fh}; - # The above close() causes a problem which would tickle a bug in - # 09_gen_rs.t subtest #51 and onwards but only with threaded builds: - # Couldn't seek filehandle: Bad file number at lib/Tie/File.pm line 826 - # Tie::File::_seek('Tie::File=HASH(0x14015e2f0)',-1) called at lib/Tie/File.pm line 870 - # Tie::File::_fill_offsets('Tie::File=HASH(0x14015e2f0)') called at lib/Tie/File.pm line 256 - # Tie::File::FETCHSIZE('Tie::File=HASH(0x14015e2f0)') called at lib/Tie/File.pm line 428 - # Tie::File::_splice('Tie::File=HASH(0x14015e2f0)',1,0,'x','y') called at lib/Tie/File.pm line 403 - # Tie::File::SPLICE('Tie::File=HASH(0x14015e2f0)',1,0,'x','y') called at lib/Tie/File/t/09_gen_rs.t line 120 } } diff --git a/lib/Tie/File/t/09_gen_rs.t b/lib/Tie/File/t/09_gen_rs.t index 1b02a84..7d70e3e 100644 --- a/lib/Tie/File/t/09_gen_rs.t +++ b/lib/Tie/File/t/09_gen_rs.t @@ -105,13 +105,6 @@ if (setup_badly_terminated_file(3)) { push @a, "next"; check_contents($badrec, "next"); } -use Config; -if ($Config{usethreads}) { - for (51..58) { - print "not ok $_ # TODO - premature close() -> _seek() failure\n"; - } - exit 0; -} # (51-52) if (setup_badly_terminated_file(2)) { $o = tie @a, 'Tie::File', $file,