X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=op.c;h=64914ea30918048a6763375e8af9a1b5aaa13619;hb=63478870f61d3f4e0428fe761bb835b4cc010aa6;hp=f721f06cbac328f5de60d53140c54771a0c1d91a;hpb=4af0bda917eceeead6e59e5dc7c6b28fce055a0a;p=p5sagit%2Fp5-mst-13.2.git diff --git a/op.c b/op.c index f721f06..64914ea 100644 --- a/op.c +++ b/op.c @@ -843,29 +843,6 @@ S_op_clear(pTHX_ OP *o) case OP_MATCH: case OP_QR: clear_pmop: - { - HV *pmstash = PmopSTASH(cPMOPo); - if (pmstash) { - PMOP *pmop = HvPMROOT(pmstash); - PMOP *lastpmop = NULL; - while (pmop) { - if (cPMOPo == pmop) { - if (lastpmop) - lastpmop->op_pmnext = pmop->op_pmnext; - else - HvPMROOT(pmstash) = pmop->op_pmnext; - break; - } - lastpmop = pmop; - pmop = pmop->op_pmnext; - } -#ifdef USE_ITHREADS - Safefree(PmopSTASHPV(cPMOPo)); -#else - /* NOTE: PMOP.op_pmstash is not refcounted */ -#endif - } - } cPMOPo->op_pmreplroot = Nullop; ReREFCNT_dec(cPMOPo->op_pmregexp); cPMOPo->op_pmregexp = (REGEXP*)NULL; @@ -2895,11 +2872,8 @@ Perl_pmtrans(pTHX_ OP *o, OP *expr, OP *repl) } } } - if (!del && (rlen > 0xff || tlen > 0xff)) { - if (j >= rlen) - j = rlen - 1; - else - cPVOPo->op_pv = (char*)Renew(tbl, 0x101+rlen-j, short); + if (!del && rlen >= j) { + cPVOPo->op_pv = (char*)Renew(tbl, 0x101+rlen-j, short); tbl[0x100] = rlen - j; for (i=0; i < rlen - j; i++) tbl[0x101+i] = r[j+i]; @@ -2958,7 +2932,6 @@ Perl_newPMOP(pTHX_ I32 type, I32 flags) if (type != OP_TRANS && PL_curstash) { pmop->op_pmnext = HvPMROOT(PL_curstash); HvPMROOT(PL_curstash) = pmop; - PmopSTASH_set(pmop,PL_curstash); } return (OP*)pmop;