X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_sys.c;h=5c9bfeafc4d563373fc8439a496dea601a93d26d;hb=f29b885a606ebcae8bf384c16eb4affebb332ccc;hp=c8a46380d8e9078b7af45466595c92af33694fea;hpb=0e528f24e7b99cb9698e649a1be36ce5daf462d9;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_sys.c b/pp_sys.c index c8a4638..5c9bfea 100644 --- a/pp_sys.c +++ b/pp_sys.c @@ -1277,16 +1277,17 @@ PP(pp_enterwrite) else fgv = gv; + if (!fgv) { + DIE(aTHX_ "Not a format reference"); + } cv = GvFORM(fgv); if (!cv) { - if (fgv) { - SV * const tmpsv = sv_newmortal(); - const char *name; - gv_efullname4(tmpsv, fgv, NULL, FALSE); - name = SvPV_nolen_const(tmpsv); - if (name && *name) - DIE(aTHX_ "Undefined format \"%s\" called", name); - } + SV * const tmpsv = sv_newmortal(); + const char *name; + gv_efullname4(tmpsv, fgv, NULL, FALSE); + name = SvPV_nolen_const(tmpsv); + if (name && *name) + DIE(aTHX_ "Undefined format \"%s\" called", name); DIE(aTHX_ "Not a format reference"); } if (CvCLONE(cv)) @@ -1301,16 +1302,18 @@ PP(pp_leavewrite) dVAR; dSP; GV * const gv = cxstack[cxstack_ix].blk_sub.gv; register IO * const io = GvIOp(gv); - PerlIO * const ofp = IoOFP(io); + PerlIO *ofp; PerlIO *fp; SV **newsp; I32 gimme; register PERL_CONTEXT *cx; + if (!io || !(ofp = IoOFP(io))) + goto forget_top; + 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) {