diff --git a/ase/awk/awk_i.h b/ase/awk/awk_i.h index 323ee024..e693a323 100644 --- a/ase/awk/awk_i.h +++ b/ase/awk/awk_i.h @@ -1,5 +1,5 @@ /* - * $Id: awk_i.h,v 1.9 2006-05-10 16:02:39 bacon Exp $ + * $Id: awk_i.h,v 1.10 2006-05-11 18:15:34 bacon Exp $ */ #ifndef _XP_AWK_AWKI_H_ @@ -151,7 +151,6 @@ struct xp_awk_run_t int errnum; xp_awk_tree_t* tree; xp_size_t nglobals; - }; #endif diff --git a/ase/awk/run.c b/ase/awk/run.c index bf4ef24b..9c550d3b 100644 --- a/ase/awk/run.c +++ b/ase/awk/run.c @@ -1,5 +1,5 @@ /* - * $Id: run.c,v 1.90 2006-05-09 15:58:16 bacon Exp $ + * $Id: run.c,v 1.91 2006-05-11 18:15:34 bacon Exp $ */ #include @@ -650,7 +650,13 @@ static int __run_statement (xp_awk_run_t* run, xp_awk_nde_t* nde) break; default: - if (__eval_expression(run,nde) == XP_NULL) return -1; + { + xp_awk_val_t* v; + v = __eval_expression(run,nde); + if (v == XP_NULL) return -1; + xp_awk_refupval (v); + xp_awk_refdownval (run, v); + } break; } @@ -2367,6 +2373,7 @@ static xp_awk_val_t* __eval_incpst (xp_awk_run_t* run, xp_awk_nde_t* nde) xp_long_t r = ((xp_awk_val_int_t*)left)->val; res = xp_awk_makeintval (run, r); if (res == XP_NULL) PANIC (run, XP_AWK_ENOMEM); + res = xp_awk_val_nil; res2 = xp_awk_makeintval (run, r + 1); if (res2 == XP_NULL) diff --git a/ase/test/awk/t7.awk b/ase/test/awk/t7.awk index 7f88630a..8a431564 100644 --- a/ase/test/awk/t7.awk +++ b/ase/test/awk/t7.awk @@ -1,5 +1,5 @@ BEGIN { i = 20; j = 0; } -{ i++; } -i % 2 { j++; } +{ i++; /*i = i + 1;*/ } +i % 2 { /*j ++;*/ j = j + 1; } /*"1","2" || "Yes" {}*/ /*END { i = i + 1234; j = j + 1234; }*/ diff --git a/ase/test/awk/t8.awk b/ase/test/awk/t8.awk new file mode 100644 index 00000000..b4eaf2e3 --- /dev/null +++ b/ase/test/awk/t8.awk @@ -0,0 +1 @@ +BEGIN { 10; 20; x=30; a=40; }