On Wed, 9 Apr 2008, Will Coleda via RT wrote: > On Fri Apr 04 22:28:31 2008, [EMAIL PROTECTED] wrote: > > On Thursday 03 April 2008 11:22:16 Andy Dougherty wrote: > > > > > parrot-andy/compilers/imcc/optimizer.c --- > > > parrot-svn/compilers/imcc/optimizer.c 2008-03-31 15:14:39.000000000 > -0400 > > > +++ parrot-andy/compilers/imcc/optimizer.c 2008-04-03 > > > 13:14:52.000000000 > > > -0400 @@ -976,8 +976,10 @@ > > > * from the result > > > */ > > > branched = eval_ins(interp, op, found, r); > > > - if (branched == -1) > > > + if (branched == -1) { > > > + *ok = 0; /* XXX Is this return value sensible? */ > > > return NULL; > > > + } > > > > Sadly, this part doesn't work because of the other call to this > function. > > I've applied the rest of the patch with some tweaks as r26763. > >
> Andy, does this test pass for you now? Yes, it should, since the initialization is now done in the calling function. I'd be happier if the following comment-only patch were applied, so that next time someone tries to address the deeper problem there's at least a flag in the code about one of the question spots. --- parrot-svn/compilers/imcc/optimizer.c Mon Apr 7 09:26:28 2008 +++ parrot-andy/compilers/imcc/optimizer.c Wed Apr 9 17:47:43 2008 @@ -980,8 +980,10 @@ * from the result */ branched = eval_ins(interp, op, found, r); - if (branched == -1) - return NULL; + if (branched == -1) { + /* XXX Deliberately not setting *ok. See [perl #43048] */ + return NULL; + } /* * for math ops result is in I0/N0 * if it was a branch with constant args, the result is -- Andy Dougherty [EMAIL PROTECTED]