X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_ctl.c;h=c1df86e31adea98212b0ec8b518e362b18fc9e9d;hb=b2a156bd8e464af88881c77344280160fd844dcf;hp=15a14911095d6dd3aae4bfb74abd561cbe4774b1;hpb=cc8d50a7c6a04d7a7e152c0e2861bc370cc6c9e6;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_ctl.c b/pp_ctl.c index 15a1491..c1df86e 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -2113,7 +2113,7 @@ PP(pp_last) case CXt_LOOP: pop2 = CXt_LOOP; newsp = PL_stack_base + cx->blk_loop.resetsp; - nextop = cx->blk_loop.last_op->op_next; + nextop = cx->blk_loop.my_op->op_lastop->op_next; break; case CXt_SUB: pop2 = CXt_SUB; @@ -2196,7 +2196,7 @@ PP(pp_next) if (PL_scopestack_ix < inner) leave_scope(PL_scopestack[PL_scopestack_ix]); PL_curcop = cx->blk_oldcop; - return cx->blk_loop.next_op; + return CX_LOOP_NEXTOP_GET(cx); } PP(pp_redo) @@ -2220,7 +2220,7 @@ PP(pp_redo) if (cxix < cxstack_ix) dounwind(cxix); - redo_op = cxstack[cxix].blk_loop.redo_op; + redo_op = cxstack[cxix].blk_loop.my_op->op_redoop; if (redo_op->op_type == OP_ENTER) { /* pop one less context to avoid $x being freed in while (my $x..) */ cxstack_ix++; @@ -4245,7 +4245,7 @@ PP(pp_break) PL_curcop = cx->blk_oldcop; if (CxFOREACH(cx)) - return cx->blk_loop.next_op; + return CX_LOOP_NEXTOP_GET(cx); else return cx->blk_givwhen.leave_op; }