# HG changeset patch # User lost # Date 1232175049 0 # Node ID 83ba34ed11b3b3907ee364a349c29f2bf1eac198 # Parent 34ca1c6e95504d7bfb65c7a633ce7c91de75fdde Fixed problem with constant expressions evaluating to 0 when they shouldn't diff -r 34ca1c6e9550 -r 83ba34ed11b3 src/lwasm.c --- a/src/lwasm.c Sat Jan 17 06:27:01 2009 +0000 +++ b/src/lwasm.c Sat Jan 17 06:50:49 2009 +0000 @@ -412,7 +412,7 @@ *inp = (char *)ep; if (slot >= 0) { - l -> exprends[slot] = ep; + l -> exprends[slot] = (char *)ep; l -> exprvals[slot] = lwasm_expr_get_value(s); } } @@ -427,9 +427,11 @@ if (s && lwasm_expr_is_constant(s)) { + *val = lwasm_expr_get_value(s); lwasm_expr_stack_free(s); l -> exprs[slot] = NULL; s = NULL; + return 0; } if (!s && slot >= 0) diff -r 34ca1c6e9550 -r 83ba34ed11b3 src/pseudo.c --- a/src/pseudo.c Sat Jan 17 06:27:01 2009 +0000 +++ b/src/pseudo.c Sat Jan 17 06:50:49 2009 +0000 @@ -130,8 +130,7 @@ as -> addr += l -> nocodelen; return; } - - r = lwasm_expr_result2(as, l, p, EXPR_PASS1CONST, &v, 0); + r = lwasm_expr_result2(as, l, p, EXPR_PASS1CONST, &v, -1); if (r != 0) return; l -> nocodelen = v;