X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_hot.c;h=2f2876bac982c87e3c0ae3c54030e32d548b3af8;hb=19b95bf092bc6fdb9455fe107fc46111b0a1ec31;hp=f01a3e06dfa36d89a48a1979fdcd681eeb50a9d4;hpb=f0ab9afb53ef594bb6fb8989153fbfba9762816f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_hot.c b/pp_hot.c index f01a3e0..2f2876b 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -130,8 +130,11 @@ PP(pp_sassign) else if (PL_op->op_private & OPpASSIGN_STATE) { if (SvPADSTALE(right)) SvPADSTALE_off(right); - else + else { + (void)POPs; + PUSHs(right); RETURN; /* ignore assignment */ + } } if (PL_tainting && PL_tainted && !SvTAINTED(left)) TAINT_NOT; @@ -969,6 +972,12 @@ PP(pp_aassign) int duplicates = 0; SV **firsthashrelem = NULL; /* "= 0" keeps gcc 2.95 quiet */ + if (PL_op->op_private & OPpASSIGN_STATE) { + if (SvPADSTALE(*firstlelem)) + SvPADSTALE_off(*firstlelem); + else + RETURN; /* ignore assignment */ + } PL_delaymagic = DM_DELAY; /* catch simultaneous items */ gimme = GIMME_V; @@ -986,12 +995,6 @@ PP(pp_aassign) } } } - if (PL_op->op_private & OPpASSIGN_STATE) { - if (SvPADSTALE(*firstlelem)) - SvPADSTALE_off(*firstlelem); - else - RETURN; /* ignore assignment */ - } relem = firstrelem; lelem = firstlelem; @@ -3021,6 +3024,7 @@ S_method_common(pTHX_ SV* meth, U32* hashp) && SvOBJECT(ob)))) { Perl_croak(aTHX_ "Can't call method \"%s\" on unblessed reference", + (SvSCREAM(meth) && strEQ(name,"isa")) ? "DOES" : name); }