X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=op.c;h=4c5dd1302bcbc222764c21688b5c4a59a8be3108;hb=4194d4900628023d2d8e6a71f5036d1975be36d7;hp=ab9d7b16e3afb9e19f01df9b12e684bb9302df08;hpb=e48f23091da2d4765330c841b01ea37b4d2bb3ac;p=p5sagit%2Fp5-mst-13.2.git diff --git a/op.c b/op.c index ab9d7b1..4c5dd13 100644 --- a/op.c +++ b/op.c @@ -2871,6 +2871,15 @@ Perl_pmtrans(pTHX_ OP *o, OP *expr, OP *repl) } } } + if (!del) { + if (j >= rlen) + j = rlen - 1; + else + 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]; + } } else { if (!rlen && !del) { @@ -4154,7 +4163,6 @@ Perl_cv_undef(pTHX_ CV *cv) LEAVE; } SvPOK_off((SV*)cv); /* forget prototype */ - CvFLAGS(cv) = 0; CvGV(cv) = Nullgv; SvREFCNT_dec(CvOUTSIDE(cv)); CvOUTSIDE(cv) = Nullcv; @@ -4183,6 +4191,7 @@ Perl_cv_undef(pTHX_ CV *cv) } CvPADLIST(cv) = Nullav; } + CvFLAGS(cv) = 0; } #ifdef DEBUG_CLOSURES @@ -5799,7 +5808,6 @@ Perl_ck_glob(pTHX_ OP *o) gv = newGVgen("main"); gv_IOadd(gv); append_elem(OP_GLOB, o, newGVOP(OP_GV, 0, gv)); - SvREFCNT_dec((SV*)gv); /* had excess refcnt */ scalarkids(o); return o; }