This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
remove obsolete panic from die_unwind()
authorDavid Mitchell <davem@iabyn.com>
Fri, 16 Oct 2015 11:00:46 +0000 (12:00 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 3 Feb 2016 08:59:45 +0000 (08:59 +0000)
It panics if the context it has just popped back to isn't a CXt_EVAL.
Since we have just called dopoptoeval() which can only pop to an eval, and
since we assert that its an eval, this seems such an unlikely "this can
can never happen" that it doesn't really seem worth testing for.

It was added in perl5.000, and may have made slightly more sense then, as
there used to be a POPBLOCK just before it.

pod/perldiag.pod
pp_ctl.c

index ae061f9..ba653ba 100644 (file)
@@ -4318,11 +4318,6 @@ there are in the savestack.
 (P) Failed an internal consistency check while trying to reset a weak
 reference.
 
-=item panic: die %s
-
-(P) We popped the context stack to an eval context, and then discovered
-it wasn't an eval context.
-
 =item panic: do_subst
 
 (P) The internal pp_subst() routine was called with invalid operational
index 00b9e02..93404d4 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1674,22 +1674,14 @@ Perl_die_unwind(pTHX_ SV *msv)
 
             cx = &cxstack[cxstack_ix];
             assert(CxTYPE(cx) == CXt_EVAL);
+
+            /* return false to the caller of eval */
             newsp = PL_stack_base + cx->blk_oldsp;
             gimme = cx->blk_gimme;
-
            if (gimme == G_SCALAR)
                *++newsp = &PL_sv_undef;
            PL_stack_sp = newsp;
 
-
-           if (CxTYPE(cx) != CXt_EVAL) {
-               STRLEN msglen;
-               const char* message = SvPVx_const(exceptsv, msglen);
-               PerlIO_write(Perl_error_log, (const char *)"panic: die ", 11);
-               PerlIO_write(Perl_error_log, message, msglen);
-               my_exit(1);
-           }
-
             CX_LEAVE_SCOPE(cx);
            POPEVAL(cx);
            POPBLOCK(cx);