summaryrefslogtreecommitdiff
path: root/pp_ctl.c
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1999-10-14 17:47:35 +0000
committerGurusamy Sarathy <gsar@cpan.org>1999-10-14 17:47:35 +0000
commit0cdb207790df717da1f7d2136f6b268baceb3494 (patch)
tree7a3741814379bd5b2e20aea2f320153c646f75e1 /pp_ctl.c
parent3e5d0dec1210692f67ee4d7c2687147c8f62f366 (diff)
downloadperl-0cdb207790df717da1f7d2136f6b268baceb3494.tar.gz
fix POPSTACK panics that ensued from bad interaction between
runlevels and stack of stacks (change#3988 done right); basically, we pop the runlevel if the stacklevel is not the same one we started the runlevel with p4raw-link: @3988 on //depot/perl: a7c6d24429ab2b6db54575a3bdc62c7ed9f881cf p4raw-id: //depot/perl@4376
Diffstat (limited to 'pp_ctl.c')
-rw-r--r--pp_ctl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index 5f3ca18667..5e45a9c48f 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -2436,6 +2436,7 @@ S_docatch(pTHX_ OP *o)
dTHR;
int ret;
OP *oldop = PL_op;
+ volatile PERL_SI *cursi = PL_curstackinfo;
dJMPENV;
#ifdef DEBUGGING
@@ -2448,7 +2449,7 @@ S_docatch(pTHX_ OP *o)
case 0:
break;
case 3:
- if (PL_restartop) {
+ if (PL_restartop && cursi == PL_curstackinfo) {
PL_op = PL_restartop;
PL_restartop = 0;
goto redo_body;