On Tue, Mar 4, 2008 at 10:30 PM, Will Coleda <[EMAIL PROTECTED]> wrote: > > On Tue, Mar 4, 2008 at 10:14 PM, chromatic <[EMAIL PROTECTED]> wrote: > > > > On Tuesday 04 March 2008 19:09:48 Will Coleda wrote: > > > > > On Tue, Mar 4, 2008 at 9:39 PM, chromatic <[EMAIL PROTECTED]> wrote: > > > > > > Tcl: doesn't run > > > > > > > > unable to assign self to this type > > > > # current instr.: '__list' pc 25773 > > > > (languages/tcl/runtime/conversions.pir:27) # called from Sub '&proc' > pc > > > > 22110 > > > > (languages/tcl/runtime/builtin/proc.pir:106) > > > > # called from Sub '_anon' pc 44 (EVAL_4:18) > > > > # called from Sub '__load_stdlib' pc 55943 (runtime/tcllib.pir:291) > > > > # called from Sub '_main' pc 3 (src/tclsh.pir:36) > > > > > > Offending code: > > > > > > morph value, .Undef > > > assign value, $P0 > > > > > > 25772 morph P0, 80 P0=TclString=PMC(0x790080) > > > 25775 assign P0, P1 P0=Undef=PMC(0x790080) > > > P1=TclList=PMC(0x78ebd4) > > > > > > This part of tcl still works in trunk. > > > > r26217 fixes most of that, but I'm no fan of .Undef. (Why does that work > in > > trunk?) > > > > -- c > > > > > > As James noted, build is currently borked in the branch so I can't test the > fix. > > And no fair asking why it works in trunk, it just does! =-) > > > Seriously, this is how we used to have to do "copy" - wipe an existing > PMC then assign it the new value. I'll see if I can eliminate this > idiom and just use copy instead. > > -- > Will "Coke" Coleda >
FYI, this ends up *mostly* working, but I end up with a gazillion (I counted!) warnings, ala: parrot(27000) malloc: *** error for object 0x3f4b30: double free parrot(27000) malloc: *** set a breakpoint in szone_error to debug Which ... infect the output of the perl-based tests; anything that is checking stdout/error gets these warnings too and fails. But all the tcl-based tests seem to pass. (I tried running this through gdb and setting a breakpoint as instructed. didn't help.) I'll see if I can narrow down the double free error to a small PIR case and open a ticket. -- Will "Coke" Coleda