Retract #20597, too many resulting core dumps.
Jarkko Hietaniemi [Sun, 10 Aug 2003 19:45:45 +0000 (19:45 +0000)]
p4raw-id: //depot/perl@20602

pad.c
t/op/closure.t

diff --git a/pad.c b/pad.c
index a121e53..90d9979 100644 (file)
--- a/pad.c
+++ b/pad.c
@@ -258,15 +258,9 @@ Perl_pad_undef(pTHX_ CV* cv)
                {
                    assert(CvWEAKOUTSIDE(innercv));
                    CvWEAKOUTSIDE_off(innercv);
+                   CvOUTSIDE(innercv) = outercv;
                    CvOUTSIDE_SEQ(innercv) = seq;
-                   /* don't relink to grandfather if he's being freed */
-                   if (SvREFCNT(outercv)) {
-                       CvOUTSIDE(innercv) = outercv;
-                       SvREFCNT_inc(outercv);
-                   }
-                   else {
-                       CvOUTSIDE(innercv) = Nullcv;
-                   }
+                   SvREFCNT_inc(outercv);
                }
            }
        }
index 763e2a7..dd7b50c 100755 (executable)
@@ -13,7 +13,7 @@ BEGIN {
 
 use Config;
 
-print "1..185\n";
+print "1..184\n";
 
 my $test = 1;
 sub test (&) {
@@ -641,27 +641,4 @@ f16302();
     test { $a{7}->()->() + $a{11}->()->() == 18 };
 }
 
-# bugid #23265 - this used to coredump during destruction of PL_maincv
-# and its children
-
-require './test.pl';
-
-my $got = runperl(
-    prog => q[
-       print
-           sub {$_[0]->(@_)} -> (
-               sub {
-                   $_[1]
-                       ?  $_[0]->($_[0], $_[1] - 1) .  sub {"x"}->()
-                       : "y"
-               },   
-               2
-           )
-           , "\n"
-       ;            
-    
-    ],
-    stderr => 1
-);
-test { $got eq "yxx\n" };