diff options
-rw-r--r-- | dump.c | 1 | ||||
-rw-r--r-- | pp_ctl.c | 11 | ||||
-rw-r--r-- | run.c | 1 | ||||
-rw-r--r-- | scope.c | 2 |
4 files changed, 12 insertions, 3 deletions
@@ -2118,6 +2118,7 @@ Perl_runops_debug(pTHX) } } while ((PL_op = PL_op->op_ppaddr(aTHX))); DEBUG_l(Perl_deb(aTHX_ "leaving RUNOPS level\n")); + PERL_ASYNC_CHECK(); TAINT_NOT; return 0; @@ -377,6 +377,7 @@ PP(pp_substcont) TAINT_NOT; LEAVE_SCOPE(cx->sb_oldsave); POPSUBST(cx); + PERL_ASYNC_CHECK(); RETURNOP(pm->op_next); /* NOTREACHED */ } @@ -2732,6 +2733,7 @@ PP(pp_next) if (PL_scopestack_ix < inner) leave_scope(PL_scopestack[PL_scopestack_ix]); PL_curcop = cx->blk_oldcop; + PERL_ASYNC_CHECK(); return (cx)->blk_loop.my_op->op_nextop; } @@ -2774,6 +2776,7 @@ PP(pp_redo) LEAVE_SCOPE(oldsave); FREETMPS; PL_curcop = cx->blk_oldcop; + PERL_ASYNC_CHECK(); return redo_op; } @@ -2978,6 +2981,7 @@ PP(pp_goto) PUTBACK; (void)(*CvXSUB(cv))(aTHX_ cv); LEAVE; + PERL_ASYNC_CHECK(); return retop; } else { @@ -3049,6 +3053,7 @@ PP(pp_goto) } } } + PERL_ASYNC_CHECK(); RETURNOP(CvSTART(cv)); } } @@ -3209,6 +3214,7 @@ PP(pp_goto) PL_do_undump = FALSE; } + PERL_ASYNC_CHECK(); RETURNOP(retop); } @@ -5128,10 +5134,13 @@ PP(pp_leavewhen) leave_scope(PL_scopestack[PL_scopestack_ix]); PL_curcop = cx->blk_oldcop; + PERL_ASYNC_CHECK(); return cx->blk_loop.my_op->op_nextop; } - else + else { + PERL_ASYNC_CHECK(); RETURNOP(cx->blk_givwhen.leave_op); + } } PP(pp_continue) @@ -40,6 +40,7 @@ Perl_runops_standard(pTHX) register OP *op = PL_op; while ((PL_op = op = op->op_ppaddr(aTHX))) { } + PERL_ASYNC_CHECK(); TAINT_NOT; return 0; @@ -1168,8 +1168,6 @@ Perl_leave_scope(pTHX_ I32 base) } PL_tainted = was; - - PERL_ASYNC_CHECK(); } void |