=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/eval.c,v retrieving revision 1.66 retrieving revision 1.69 diff -u -p -r1.66 -r1.69 --- OpenXM_contrib2/asir2000/parse/eval.c 2010/04/23 04:44:52 1.66 +++ OpenXM_contrib2/asir2000/parse/eval.c 2013/11/21 06:48:04 1.69 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/parse/eval.c,v 1.65 2009/03/04 09:15:36 ohara Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/eval.c,v 1.68 2011/02/18 02:54:49 noro Exp $ */ #include #include "ca.h" @@ -917,6 +917,7 @@ pointer evalf(FUNC f,FNODE a,FNODE opt) } else opts = 0; if ( !n ) { + current_option = opts; cur_binf = f; (*f->f.binf)(&val); } else { @@ -996,6 +997,8 @@ pointer evalf(FUNC f,FNODE a,FNODE opt) } else val = evalstat((SNODE)BDY(f->f.usrf)); f_return = f_break = f_continue = 0; poppvs(); + if ( PVSS ) + evalstatline = ((VS)BDY(PVSS))->at; break; case A_PURE: args = (LIST)eval(a); @@ -1164,6 +1167,7 @@ pointer bevalf(FUNC f,NODE a) } switch ( f->id ) { case A_BIN: + current_option = 0; if ( !n ) { cur_binf = f; (*f->f.binf)(&val); @@ -1340,7 +1344,7 @@ pointer evalpf(PF pf,NODE args,NODE dargs) simplify_ins(ins,&s); } else { s = pf->body; - if ( dnode ) { + if ( dargs ) { for ( i = 0, dnode = dargs; dnode; dnode = NEXT(dnode), i++ ) { di = QTOS((Q)dnode->body); for ( j = 0; j < di; j++ ) {