Void functions can't try to return anything. I haven't checked if this patch is "right" or not. The documentation for Parrot_set_attrib_by_num() claims it returns a PMC *, but the source code uses 'void' and doesn't actually return anything. I don't know what the intended behavior actually is.
This patch at least lets it compile. --- parrot-current/src/pmc/parrotobject.pmc 2007-03-16 11:15:15.000000000 -0400 +++ parrot-andy/src/pmc/parrotobject.pmc 2007-03-21 11:50:28.569996000 -0400 @@ -207,8 +207,10 @@ PMC *sub = Parrot_find_vtable_meth(interp, SELF, meth_v); if (PMC_IS_NULL(sub)) sub = find_meth(interp, SELF, meth); - if (PMC_IS_NULL(sub)) - return Parrot_set_attrib_by_num(INTERP, SELF, idx, value); + if (PMC_IS_NULL(sub)) { + Parrot_set_attrib_by_num(INTERP, SELF, idx, value); + return ; + } (PMC*) Parrot_run_meth_fromc_args(interp, sub, SELF, meth, "vIP", idx, value); } @@ -219,8 +221,10 @@ PMC *sub = Parrot_find_vtable_meth(interp, SELF, meth_v); if (PMC_IS_NULL(sub)) sub = find_meth(interp, SELF, meth); - if (PMC_IS_NULL(sub)) - return Parrot_set_attrib_by_str(INTERP, SELF, idx, value); + if (PMC_IS_NULL(sub)) { + Parrot_set_attrib_by_str(INTERP, SELF, idx, value); + return; + } (PMC*) Parrot_run_meth_fromc_args(interp, sub, SELF, meth, "vSP", idx, value); } -- Andy Dougherty [EMAIL PROTECTED]