X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_ctl.c;h=f94bd54b895fb8892b5382acaefd70ec5182f6f8;hb=24e11b2ac803c2241e1c997535309a8b2ce19d1d;hp=60d778b5a14bb15f531dd4934029145fb6d6e750;hpb=e7513ba08f5072cd6b3f2cf5391fe128dd157ac1;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_ctl.c b/pp_ctl.c index 60d778b..f94bd54 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -1916,29 +1916,32 @@ S_dofindlabel(pTHX_ OP *o, char *label, OP **opstack, OP **oplimit) *ops++ = cUNOPo->op_first; if (ops >= oplimit) Perl_croak(aTHX_ too_deep); + *ops = 0; } - *ops = 0; if (o->op_flags & OPf_KIDS) { dTHR; /* First try all the kids at this level, since that's likeliest. */ for (kid = cUNOPo->op_first; kid; kid = kid->op_sibling) { - if ((kid->op_type == OP_NEXTSTATE || kid->op_type == OP_DBSTATE) && - kCOP->cop_label && strEQ(kCOP->cop_label, label)) + if ((kid->op_type == OP_NEXTSTATE || kid->op_type == OP_DBSTATE) + && kCOP->cop_label && strEQ(kCOP->cop_label, label)) + { return kid; + } } for (kid = cUNOPo->op_first; kid; kid = kid->op_sibling) { if (kid == PL_lastgotoprobe) continue; - if ((kid->op_type == OP_NEXTSTATE || kid->op_type == OP_DBSTATE) && - (ops == opstack || - (ops[-1]->op_type != OP_NEXTSTATE && - ops[-1]->op_type != OP_DBSTATE))) + if ((kid->op_type == OP_NEXTSTATE || kid->op_type == OP_DBSTATE) + && (ops == opstack || (ops[-1]->op_type != OP_NEXTSTATE + && ops[-1]->op_type != OP_DBSTATE))) + { *ops++ = kid; + *ops = 0; + } if (o = dofindlabel(kid, label, ops, oplimit)) return o; } } - *ops = 0; return 0; }