On Tue, 27 Mar 2007, Steve Peters wrote: > # New Ticket Created by Steve Peters > # Please include the string: [perl #42151] > # in the subject line of all future correspondence about this issue. > # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=42151 >
Thanks for taking on this Herculean task. However, one thought immediately came to mind: > > Index: src/ops/experimental.ops > =================================================================== > --- src/ops/experimental.ops (revision 17785) > +++ src/ops/experimental.ops (working copy) > @@ -520,7 +520,7 @@ > Interp * const new_interp = (Interp *)PMC_data($1); > opcode_t *pc; > Interp_flags_SET(new_interp, PARROT_EXTERN_CODE_FLAG); > - pc = VTABLE_invoke(new_interp, $2, NULL); > + pc = (opcode_t *)VTABLE_invoke(new_interp, $2, NULL); > Parrot_runops_fromc_args(new_interp, $2, "P"); > goto NEXT(); > } Instead of sprinking (opcode_t *) casts everywhere, wouldn't it be better to declare the invoke() function as returning an (opcode_t *) ? Similarly for most of the other bits you patched. Wouldn't it make more sense in the long run to change the functions to say they return what they actually return? Of course you can't always do that: > Parrot_new_charset(Interp *interp) > { > - return mem_sys_allocate(sizeof (CHARSET)); > + return (CHARSET *)mem_sys_allocate(sizeof (CHARSET)); > } mem_sys_allocate() obviously can only return one type, but is used in many contexts. -- Andy Dougherty [EMAIL PROTECTED]