in reply to I too don't like Perl 5.8.2 threads
This code is identical in both 5.8.1 and 5.8.2. Now I need to check 5.8.0 to see what has changed./* detach any '&' anon children in the pad; if afterwards they * are still live, fix up their CvOUTSIDEs to point to our outside +, * bypassing us. */ /* XXX DAPM for efficiency, we should only do this if we know we h +ave * children, or integrate this loop with general cleanup */ if (!PL_dirty) { /* don't bother during global destruction */ CV *outercv = CvOUTSIDE(cv); U32 seq = CvOUTSIDE_SEQ(cv); AV *comppad_name = (AV*)AvARRAY(padlist)[0]; SV **namepad = AvARRAY(comppad_name); AV *comppad = (AV*)AvARRAY(padlist)[1]; SV **curpad = AvARRAY(comppad); for (ix = AvFILLp(comppad_name); ix > 0; ix--) { SV *namesv = namepad[ix]; if (namesv && namesv != &PL_sv_undef /* DIES HERE */ && *SvPVX(namesv) == '&') {
UPDATE: The pad.c file (and associated functions) is new in 5.8.1... So it won't be a question of doing a simple diff :-(. I guess that this is one for the perl5-porters list...
Michael
|
|---|