On Mon Mar 26 16:51:02 2012, sprout wrote: > Because it’s freeing PL_main_root twice. This one appears to work: > > diff --git a/op.c b/op.c > index 2ffe10f..86ec54e 100644 > --- a/op.c > +++ b/op.c > @@ -1496,14 +1496,17 @@ the tree thread-safe. > void > Perl_finalize_optree(pTHX_ OP* o) > { > + I32 i = PL_savestack_ix; > PERL_ARGS_ASSERT_FINALIZE_OPTREE; > > + if (o != PL_main_root) SAVEFREEOP(o); > ENTER; > SAVEVPTR(PL_curcop); > > finalize_op(o); > > LEAVE; > + PL_savestack_ix = i; > } > > STATIC void > __END__ That cannot possibly work, as newATTRSUB calls finalize_optree(CvROOT(cv)), so finalize_optree is the wrong place to do this. -- Father Chrysostomos --- via perlbug: queue: perl5 status: open https://rt.perl.org:443/rt3/Ticket/Display.html?id=111462Thread Previous | Thread Next