On Thu, Jun 30, 2005 at 11:43:33AM -0400, John Peacock wrote: > David Dyck wrote: > There's nothing to regenerate; the tokenizer has already eaten the > original contents and replaced it with PL_curstash: > > ...toke.c:4350 or so... > > > case KEY___PACKAGE__: > > yylval.opval = (OP*)newSVOP(OP_CONST, 0, > > (PL_curstash > > ? > > newSVhek(HvNAME_HEK(PL_curstash)) > > : &PL_sv_undef)); > > TERM(THING); > >
and indeed the breakage in bleed occurs there: the SV attached to the const op has started getting the FAKE as well as READONLY flag set (presumably its now a shared string), and when pp_push copies the SV and pushes the copy, sv_setsv() leaves the copy fake+readonly too, which then breaks when ISA element magic is attached to it. -- The perl5 internals are a complete mess. It's like Jenga - to get the perl5 tower taller and do something new you select a block somewhere in the middle, with trepidation pull it out slowly, and then carefully balance it somewhere new, hoping the whole edifice won't collapse as a result. - Nicholas Clark, based on an original by Simon Cozens.