# HG changeset patch # User lost@l-w.ca # Date 1301804902 21600 # Node ID d96037ea0b80bc8843d374ee081816caf36ad310 # Parent 23b01aa3ecf9a08530174c36b0bb9fe47e24fe57 Fixed line number counting being broken by macros diff -r 23b01aa3ecf9 -r d96037ea0b80 lwasm/macro.c --- a/lwasm/macro.c Sat Apr 02 02:48:36 2011 -0600 +++ b/lwasm/macro.c Sat Apr 02 22:28:22 2011 -0600 @@ -267,7 +267,7 @@ { char ctcbuf[100]; char *p; - snprintf(ctcbuf, 100, "\001\001SETCONTEXT %d\n", oldcontext); + snprintf(ctcbuf, 100, "\001\001SETCONTEXT %d\n\001\001SETLINENO %d\n", oldcontext, cl -> lineno + 1); for (p = ctcbuf; *p; p++) macro_add_to_buff(&linebuff, &bloc, &blen, *p); } diff -r 23b01aa3ecf9 -r d96037ea0b80 lwasm/pass1.c --- a/lwasm/pass1.c Sat Apr 02 02:48:36 2011 -0600 +++ b/lwasm/pass1.c Sat Apr 02 22:28:22 2011 -0600 @@ -77,8 +77,13 @@ { as -> context = strtol(p1, NULL, 10); } + else if (!strcmp(line + 2, "SETLINENO")) + { + lc = strtol(p1, NULL, 10); + } lw_free(line); - lc = 1; + if (lc == 0) + lc = 1; continue; } debug_message(as, 75, "Read line: %s", line); @@ -128,7 +133,7 @@ lc = 1; if (lc) { - cl -> lineno = 1; + cl -> lineno = lc; lc = 0; } as -> line_tail = cl;