# HG changeset patch # User lost # Date 1231916685 0 # Node ID e12edcfbebd5a34a7c4aa9b56daa604d2aaedfbf # Parent 964d68cde469dbb6535ef67674631ab7d8822299 Fixed problem with expression evaluation infrastructure not advancing input pointer on pass 2 diff -r 964d68cde469 -r e12edcfbebd5 src/insn_indexed.c --- a/src/insn_indexed.c Wed Jan 14 06:33:13 2009 +0000 +++ b/src/insn_indexed.c Wed Jan 14 07:04:45 2009 +0000 @@ -125,13 +125,11 @@ *b1 = 0x9f; *b2 = 0; *b3 = 0; - r = lwasm_expr_result2(as, l, (char **)p, 0, &v, 0); if (r < 0) { return; } - if (**p != ']') { register_error(as, l, 1, "Bad operand"); diff -r 964d68cde469 -r e12edcfbebd5 src/lwasm.c --- a/src/lwasm.c Wed Jan 14 06:33:13 2009 +0000 +++ b/src/lwasm.c Wed Jan 14 07:04:45 2009 +0000 @@ -402,17 +402,18 @@ *inp = (char *)ep; if (slot >= 0) { - l -> exprends[slot] = *inp; + l -> exprends[slot] = ep; l -> exprvals[slot] = lwasm_expr_get_value(s); } } else if (l -> exprs[slot]) { s = l -> exprs[slot]; - *inp = l -> exprends[slot]; lwasm_reevaluate_expr(as, l, s); l -> exprvals[slot] = lwasm_expr_get_value(s); } + if (as -> passnum == 2 && slot >= 0) + *inp = l -> exprends[slot]; if (s && lwasm_expr_is_constant(s)) {