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.

Reply via email to