Re: Advice on coredump
Rafael Garcia-Suarez [Wed, 18 Sep 2002 22:14:57 +0000 (00:14 +0200)]
Message-Id: <20020918221457.16cb1b43.rgarciasuarez@free.fr>

p4raw-id: //depot/perl@17923

op.c
t/op/closure.t

diff --git a/op.c b/op.c
index a3876c4..67aeab0 100644 (file)
--- a/op.c
+++ b/op.c
@@ -4393,7 +4393,7 @@ Perl_cv_undef(pTHX_ CV *cv)
            AV *padlist = CvPADLIST(cv);
            I32 ix;
            /* pads may be cleared out already during global destruction */
-           if (is_eval && !PL_dirty) {
+           if ((is_eval && !PL_dirty) || CvSPECIAL(cv)) {
                /* inner references to eval's cv must be fixed up */
                AV *comppad_name = (AV*)AvARRAY(padlist)[0];
                AV *comppad = (AV*)AvARRAY(padlist)[1];
index 09df7c1..99c3216 100755 (executable)
@@ -13,7 +13,7 @@ BEGIN {
 
 use Config;
 
-print "1..171\n";
+print "1..172\n";
 
 my $test = 1;
 sub test (&) {
@@ -510,3 +510,7 @@ END
 
 }
 
+# The following dumps core with perl <= 5.8.0
+BEGIN { $vanishing_pad = sub { eval $_[0] } }
+$some_var = 123;
+test { $vanishing_pad->( '$some_var' ) == 123 };