summaryrefslogtreecommitdiff
path: root/pp_ctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'pp_ctl.c')
-rw-r--r--pp_ctl.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index 47b61b9e83..111d1392bc 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1521,7 +1521,8 @@ Perl_dounwind(pTHX_ I32 cxix)
break;
case CXt_EVAL:
POPEVAL(cx);
- /* FALLTHROUGH */
+ PL_tmps_floor = cx->cx_u.cx_blk.blku_old_tmpsfloor;
+ break;
case CXt_BLOCK:
POPBASICBLK(cx);
break;
@@ -1659,7 +1660,6 @@ Perl_die_unwind(pTHX_ SV *msv)
}
POPBLOCK(cx,PL_curpm);
- CX_LEAVE_SCOPE(cx);
POPEVAL(cx);
namesv = cx->blk_eval.old_namesv;
#ifdef DEBUGGING
@@ -3444,7 +3444,6 @@ S_doeval(pTHX_ int gimme, CV* outside, U32 seq, HV *hh)
}
SP = PL_stack_base + POPMARK; /* pop original mark */
POPBLOCK(cx,PL_curpm);
- CX_LEAVE_SCOPE(cx);
POPEVAL(cx);
namesv = cx->blk_eval.old_namesv;
/* POPBLOCK has rendered LEAVE_with_name("evalcomp") unnecessary */
@@ -4283,7 +4282,6 @@ PP(pp_leaveeval)
if (gimme != G_VOID)
SP = leave_common(newsp, SP, newsp, gimme, SVs_TEMP, FALSE);
POPBLOCK(cx,newpm);
- CX_LEAVE_SCOPE(cx);
POPEVAL(cx);
namesv = cx->blk_eval.old_namesv;
retop = cx->blk_eval.retop;
@@ -4328,7 +4326,6 @@ Perl_delete_eval_scope(pTHX)
I32 optype;
POPBLOCK(cx,newpm);
- CX_LEAVE_SCOPE(cx);
POPEVAL(cx);
PL_curpm = newpm;
PL_tmps_floor = cx->cx_u.cx_blk.blku_old_tmpsfloor;
@@ -4388,7 +4385,6 @@ PP(pp_leavetry)
SVs_PADTMP|SVs_TEMP, FALSE);
POPBLOCK(cx,newpm);
retop = cx->blk_eval.retop;
- CX_LEAVE_SCOPE(cx);
POPEVAL(cx);
PERL_UNUSED_VAR(optype);