On Friday 14 November 2008 18:13:48 Will Coleda via RT wrote: > Here's a very simple patch: > > Index: imcc.l > ========================================================= > ========== > --- imcc.l (revision 32647) > +++ imcc.l (working copy) > @@ -305,7 +305,12 @@ > > > <*>[ISNP]{DIGIT}{DIGIT}? { > - valp->s = str_dup(yytext); > + if (valp) (valp)->s = str_dup(yytext); > + > + if (! IMCC_INFO(interp)->state->pasm_file) > + IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, > + "'%s' is only a valid register name in pasm mode", > yytext); + > return REG; > }
Move the condition before the str_dup, or you'll create a memory leak in case we can recover from IMCC_fataly. > This works in plain PIR, but causes a misparse in a macro: > > error:imcc:'I10' is only a valid register name in pasm mode > in file 'runtime/parrot/library/Digest/MD5.pir' line 157 > > > Except that the only I10 near that line is $I10. > > Thoughts? I can believe that this is a problem for other types of errors in macros, so that may be a separate issue. -- c