At 7:37 PM -0500 3/2/04, Simon Glover wrote:
 I think I've figured out what's happening here. Stepping through the
 code with gdb shows that the first subclassing works fine, but the second
 blows up in Parrot_single_subclass at line 233:

    temp_pmc =
        VTABLE_clone(interpreter,
                VTABLE_get_pmc_keyed_int(interpreter,
                    (PMC *)PMC_data(base_class), PCD_ALL_PARENTS));

 This fetches the parent class's parent array, which is an Array PMC,
 and which at this point contains a single entry -- a ParrotClass PMC
 corresponding to class "A".

 We then call the clone method of this array, in order to copy it to
 temp_pmc.

 This in turn calls list_clone in order to copy its data, and since our
 list is comprised of a single PMC, list_clone calls its clone vtable
 method.

Ah, I was thinking it was a single-level clone of data--basically a shallow copy. I'll go fix.
--
Dan


--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
[EMAIL PROTECTED]                         have teddy bears and even
                                      teddy bears get drunk

Reply via email to