diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2003-08-12 08:09:43 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2003-08-12 08:09:43 +0000 |
commit | f4fea28d90cb08f5df423d88c1839538de28e6fe (patch) | |
tree | a6b343b669974df9928ac38cc1ab2dea5d266f30 /pad.c | |
parent | 3a08df91973e61b297d61204a23d6df230e5156e (diff) | |
download | perl-f4fea28d90cb08f5df423d88c1839538de28e6fe.tar.gz |
A new try from Dave Mitchell for [perl #23265].
p4raw-id: //depot/perl@20631
Diffstat (limited to 'pad.c')
-rw-r--r-- | pad.c | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -257,11 +257,19 @@ Perl_pad_undef(pTHX_ CV* cv) && CvOUTSIDE(innercv) == cv) { assert(CvWEAKOUTSIDE(innercv)); - CvWEAKOUTSIDE_off(innercv); - CvOUTSIDE(innercv) = outercv; - CvOUTSIDE_SEQ(innercv) = seq; - SvREFCNT_inc(outercv); + /* don't relink to grandfather if he's being freed */ + if (outercv && SvREFCNT(outercv)) { + CvWEAKOUTSIDE_off(innercv); + CvOUTSIDE(innercv) = outercv; + CvOUTSIDE_SEQ(innercv) = seq; + SvREFCNT_inc(outercv); + } + else { + CvOUTSIDE(innercv) = Nullcv; + } + } + } } } |