# HG changeset patch # User lost@l-w.ca # Date 1308792516 21600 # Node ID 5bf9edabd66134eef3faaba9db552e4f07213c08 # Parent 19ca3108a2238874acfb697e55cd8f9cdb2fb029 Squashed the remaining memory leaks revealed by valgrind diff -r 19ca3108a223 -r 5bf9edabd661 lwasm/input.c --- a/lwasm/input.c Wed Jun 22 19:13:06 2011 -0600 +++ b/lwasm/input.c Wed Jun 22 19:28:36 2011 -0600 @@ -136,7 +136,7 @@ t -> data2 = 0; t -> next = IS; as -> input_data = t; - t -> filespec = lw_strdup(s); +// t -> filespec = lw_strdup(s); } void input_open(asmstate_t *as, char *s) diff -r 19ca3108a223 -r 5bf9edabd661 lwasm/pass1.c --- a/lwasm/pass1.c Wed Jun 22 19:13:06 2011 -0600 +++ b/lwasm/pass1.c Wed Jun 22 19:28:36 2011 -0600 @@ -55,7 +55,7 @@ line_t *cl; char *p1; int stspace; - char *tok, *sym; + char *tok, *sym = NULL; int opnum; int lc = 1; int nomacro; @@ -63,6 +63,8 @@ for (;;) { nomacro = 0; + if (sym) + lw_free(sym); sym = NULL; line = input_readline(as); if (!line) @@ -247,6 +249,7 @@ if (*tok) { // look up operation code + lw_free(sym); sym = lw_strndup(tok, p1 - tok); for (; *p1 && isspace(*p1); p1++) /* do nothing */ ; @@ -350,8 +353,6 @@ } linedone: - lw_free(sym); - if (!as -> skipcond && !as -> inmacro) { if (cl -> sym && cl -> symset == 0) @@ -369,6 +370,10 @@ } nextline: + if (sym) + lw_free(sym); + sym = NULL; + lw_free(line); // if we've hit the "end" bit, finish out diff -r 19ca3108a223 -r 5bf9edabd661 lwasm/pseudo.c --- a/lwasm/pseudo.c Wed Jun 22 19:13:06 2011 -0600 +++ b/lwasm/pseudo.c Wed Jun 22 19:28:36 2011 -0600 @@ -1207,6 +1207,7 @@ lw_free(p3); l -> len = 0; + lw_free(fn); } PARSEFUNC(pseudo_parse_align)