summaryrefslogtreecommitdiff
path: root/t/op
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>1999-08-14 09:20:58 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>1999-08-14 09:20:58 +0000
commita7c6d24429ab2b6db54575a3bdc62c7ed9f881cf (patch)
tree7d35f0d7ea024de4150a892601d0a84bcd7d1c59 /t/op
parent7e291ef107a151a0b630a8ce85d6a562438da741 (diff)
downloadperl-a7c6d24429ab2b6db54575a3bdc62c7ed9f881cf.tar.gz
New lightweight Carp has a require. If Carp is used in a __DIE__ handler
this causes a POPSTACK panic. The problem seems to be that although die_where() has unwound the tail of perl_vdie() top_env setjmp has been set to resume execution there. Avoiding setting CATCH_SET(TRUE) in call_sv() avoids this. So invent a new G_NOCATCH flag to disable messing with CATCH_SET() in call_sv, use it in perl_vdie(). Add test to op/eval.t which will fail (panic) if bug comes back. >>> I AM NOT CONVINCED THIS IS CORRECT LONG TERM FIX <<< p4raw-id: //depot/perl@3988
Diffstat (limited to 't/op')
-rwxr-xr-xt/op/eval.t7
1 files changed, 6 insertions, 1 deletions
diff --git a/t/op/eval.t b/t/op/eval.t
index dc163e9e8f..abcb3794b7 100755
--- a/t/op/eval.t
+++ b/t/op/eval.t
@@ -1,6 +1,6 @@
#!./perl
-print "1..36\n";
+print "1..37\n";
eval 'print "ok 1\n";';
@@ -171,3 +171,8 @@ sub terminal { eval 'print $r' }
}
$x++;
+# Have we cured panic which occurred with require/eval in die handler ?
+$SIG{__DIE__} = sub { eval {1}; die shift };
+eval { die "ok ".$x++,"\n" };
+print $@;
+