summaryrefslogtreecommitdiff
path: root/pp_ctl.c
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1999-08-02 08:13:16 +0000
committerGurusamy Sarathy <gsar@cpan.org>1999-08-02 08:13:16 +0000
commitc4aa4e48f6391636ad30f4c9b73dc74fdcf93711 (patch)
treedbbb288f26cc3c332f62412d322eb794f1584304 /pp_ctl.c
parenta502f3d85db268d649a552e90a4cefc6995a8e16 (diff)
downloadperl-c4aa4e48f6391636ad30f4c9b73dc74fdcf93711.tar.gz
change#3692 had an unintentional patch leak through!
(this would explain the mysterious C<next LABEL> failures people have seen) p4raw-link: @3692 on //depot/perl: 2c15bef39460c09b2a7846a30a4fc1fc1c4f93e4 p4raw-id: //depot/perl@3878
Diffstat (limited to 'pp_ctl.c')
-rw-r--r--pp_ctl.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index d88399ef03..2d29448e77 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1921,32 +1921,29 @@ 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;
}