X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_hot.c;h=7d395141e89fa109a58826840309c1ad76c76349;hb=23f3aea032e3289acf8e6a178372c27e8e03f4a0;hp=ba8180582adf39bdedf17c56118ca167ba348cfb;hpb=eca06228e735e9cbc213af2862732d91a7609dec;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_hot.c b/pp_hot.c index ba81805..7d39514 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -163,6 +163,10 @@ PP(pp_concat) /* Take a copy since we're about to overwrite TARG */ olds = s = (U8*)savepvn((char*)s, len); } + if (SvGMAGICAL(left)) + mg_get(left); + else if (!SvOK(left) && SvTYPE(left) <= SVt_PVMG) + sv_setpv(left, ""); /* Suppress warning. */ l = (U8*)SvPV(left, targlen); if (TARG != left) sv_setpvn(TARG, (char*)l, targlen); @@ -373,6 +377,7 @@ PP(pp_print) else gv = PL_defoutgv; if ((mg = SvTIED_mg((SV*)gv, 'q'))) { + had_magic: if (MARK == ORIGMARK) { /* If using default handle then we need to make space to * pass object as 1st arg, so move other args up ... @@ -396,6 +401,8 @@ PP(pp_print) } if (!(io = GvIO(gv))) { dTHR; + if ((GvEGV(gv)) && (mg = SvTIED_mg((SV*)GvEGV(gv),'q'))) + goto had_magic; if (ckWARN2(WARN_UNOPENED,WARN_CLOSED)) report_evil_fh(gv, io, PL_op->op_type); SETERRNO(EBADF,RMS$_IFI);