X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=op.c;h=62309a1f1b34525b508335cb77f43745b07c281e;hb=187122cbaf4bb21705259325ef8e0e420b0241df;hp=28c93d8ff48a6c303a2d0b80bad046bcc3be2dfa;hpb=a86a20aad3dee6ffff452254654a89df75943779;p=p5sagit%2Fp5-mst-13.2.git diff --git a/op.c b/op.c index 28c93d8..62309a1 100644 --- a/op.c +++ b/op.c @@ -2951,7 +2951,7 @@ Perl_newPMOP(pTHX_ I32 type, I32 flags) #ifdef USE_ITHREADS { SV* repointer = newSViv(0); - av_push(PL_regex_padav,repointer); + av_push(PL_regex_padav,SvREFCNT_inc(repointer)); pmop->op_pmoffset = av_len(PL_regex_padav); PL_regex_pad = AvARRAY(PL_regex_padav); } @@ -4750,6 +4750,8 @@ Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) } /* ... before we throw it away */ SvREFCNT_dec(PL_compcv); + if (PERLDB_INTER)/* Advice debugger on the new sub. */ + ++PL_sub_generation; } else { cv = PL_compcv; @@ -6779,7 +6781,15 @@ Perl_peep(pTHX_ register OP *o) { PL_curcop = ((COP*)o); } - goto nothin; + /* XXX: We avoid setting op_seq here to prevent later calls + to peep() from mistakenly concluding that optimisation + has already occurred. This doesn't fix the real problem, + though (See 20010220.007). AMS 20010719 */ + if (oldop && o->op_next) { + oldop->op_next = o->op_next; + continue; + } + break; case OP_SCALAR: case OP_LINESEQ: case OP_SCOPE: