diff lwasm/pseudo.c @ 382:eacdae8a1575

Various bugfixes
author lost@starbug
date Sat, 15 May 2010 13:39:21 -0600
parents 6b33faa21a0a
children af5f2c51db76
line wrap: on
line diff
--- a/lwasm/pseudo.c	Mon Apr 26 19:56:10 2010 -0600
+++ b/lwasm/pseudo.c	Sat May 15 13:39:21 2010 -0600
@@ -88,8 +88,10 @@
 			lwasm_register_error(as, l, "Bad expression (#%s)", i);
 			break;
 		}
-		lwasm_save_expr(l, i, e);
-		i++;
+		lwasm_save_expr(l, i++, e);
+		if (**p != ',')
+			break;
+		(*p)++;
 	}
 	
 	l -> len = i;
@@ -118,11 +120,13 @@
 		e = lwasm_parse_expr(as, p);
 		if (!e)
 		{
-			lwasm_register_error(as, l, "Bad expression (#%s)", i);
+			lwasm_register_error(as, l, "Bad expression (#%d)", i);
 			break;
 		}
-		lwasm_save_expr(l, i, e);
-		i++;
+		lwasm_save_expr(l, i++, e);
+		if (**p != ',')
+			break;
+		(*p)++;
 	}
 	
 	l -> len = i * 2;
@@ -154,8 +158,10 @@
 			lwasm_register_error(as, l, "Bad expression (#%s)", i);
 			break;
 		}
-		lwasm_save_expr(l, i, e);
-		i++;
+		lwasm_save_expr(l, i++, e);
+		if (**p != ',')
+			break;
+		(*p)++;
 	}
 	
 	l -> len = i * 4;
@@ -1033,7 +1039,6 @@
 PARSEFUNC(pseudo_parse_align)
 {
 	lw_expr_t e;
-	
 	if (!**p)
 	{
 		lwasm_register_error(as, l, "Bad operand");
@@ -1041,6 +1046,7 @@
 	}
 	
 	e = lwasm_parse_expr(as, p);
+	
 	if (!e)
 	{
 		lwasm_register_error(as, l, "Bad operand");