unnecessary stringification in eval/die
Steve Grazzini [Sun, 15 Jun 2003 21:02:26 +0000 (21:02 +0000)]
Message-ID: <20030615210226.56430.qmail@onion.perl.org>
(See also <slrnbek5u6.cfi.joey@dragon.kitenet.net>
in c.l.p.misc and bug #17763)

p4raw-id: //depot/perl@19800

pod/perlfunc.pod
pp_ctl.c

index ac20efc..a36cda0 100644 (file)
@@ -1125,7 +1125,7 @@ This is useful for propagating exceptions:
 If LIST is empty and C<$@> contains an object reference that has a
 C<PROPAGATE> method, that method will be called with additional file
 and line number parameters.  The return value replaces the value in
-C<$@>.  ie. as if C<<$@ = eval { $@->PROPAGATE(__FILE__, __LINE__) };>>
+C<$@>.  ie. as if C<< $@ = eval { $@->PROPAGATE(__FILE__, __LINE__) }; >>
 were called.
 
 If C<$@> is empty then the string C<"Died"> is used.
index f726ab7..95ea793 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1365,8 +1365,6 @@ Perl_die_where(pTHX_ char *message, STRLEN msglen)
                sv_setpvn(ERRSV, message, msglen);
            }
        }
-       else
-           message = SvPVx(ERRSV, msglen);
 
        while ((cxix = dopoptoeval(cxstack_ix)) < 0
               && PL_curstackinfo->si_prev)
@@ -1383,6 +1381,8 @@ Perl_die_where(pTHX_ char *message, STRLEN msglen)
 
            POPBLOCK(cx,PL_curpm);
            if (CxTYPE(cx) != CXt_EVAL) {
+               if (!message)
+                   message = SvPVx(ERRSV, msglen);
                PerlIO_write(Perl_error_log, "panic: die ", 11);
                PerlIO_write(Perl_error_log, message, msglen);
                my_exit(1);