diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2000-12-21 03:54:11 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2000-12-21 03:54:11 +0000 |
commit | 7ef822cddfe985045cd287429915d6f6aecd27c9 (patch) | |
tree | abc607246b270b6b5758ed601238984e0a6efe80 | |
parent | c998f3c7edf5c8e96067437acbd36abfa8cafa7c (diff) | |
download | perl-7ef822cddfe985045cd287429915d6f6aecd27c9.tar.gz |
Fix for 20001210.003, "write(FH) on closed FH causes segv".
p4raw-id: //depot/perl@8214
-rw-r--r-- | pp_sys.c | 3 | ||||
-rwxr-xr-x | t/op/misc.t | 17 |
2 files changed, 20 insertions, 0 deletions
@@ -1236,6 +1236,8 @@ PP(pp_leavewrite) DEBUG_f(PerlIO_printf(Perl_debug_log, "left=%ld, todo=%ld\n", (long)IoLINES_LEFT(io), (long)FmLINES(PL_formtarget))); + if (!io || !ofp) + goto forget_top; if (IoLINES_LEFT(io) < FmLINES(PL_formtarget) && PL_formtarget != PL_toptarget) { @@ -1356,6 +1358,7 @@ PP(pp_leavewrite) PUSHs(&PL_sv_yes); } } +bad_ofp: PL_formtarget = PL_bodytarget; PUTBACK; return pop_return(); diff --git a/t/op/misc.t b/t/op/misc.t index 0db36c9d85..805a32bc9a 100755 --- a/t/op/misc.t +++ b/t/op/misc.t @@ -600,3 +600,20 @@ die qr(x) EXPECT (?-xism:x) at - line 1. ######## +# 20001210.003 mjd@plover.com +format REMITOUT_TOP = +FOO +. + +format REMITOUT = +BAR +. + +# This loop causes a segv in 5.6.0 +for $lineno (1..61) { + write REMITOUT; +} + +print "It's OK!"; +EXPECT +It's OK! |