> Why don't you declare namesv in the POPEVAL block ? > --- a/cop.h > +++ b/cop.h > @@ -436,11 +436,13 @@ struct block_eval { > > #define POPEVAL(cx) \ > STMT_START { \ > + SV *namesv; \ > PL_in_eval = CxOLD_IN_EVAL(cx); \ > optype = CxOLD_OP_TYPE(cx); \ > PL_eval_root = cx->blk_eval.old_eval_root; \ > - if (cx->blk_eval.old_namesv) \ > - sv_2mortal(cx->blk_eval.old_namesv); \ > + namesv = cx->blk_eval.old_namesv; \ > + if (namesv) \ > + sv_2mortal(namesv); \ > } STMT_END Because it's needed outside of the macro to print the right file name when an error happens during require. I'll commit a fix that doesn't change POPEVAL, so that it can be integrated if wanted. Nothing will prevent us from changing POPEVAL later. Vincent.Thread Previous | Thread Next