This patch fixes a segfault when more than one function is
defined in the IR input.

---
 cc2/node.c   | 2 +-
 cc2/parser.c | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/cc2/node.c b/cc2/node.c
index 4bfc353..ef91dce 100644
--- a/cc2/node.c
+++ b/cc2/node.c
@@ -69,7 +69,7 @@ cleannodes(void)
        struct arena *ap, *next;
 
        for (ap = arena; ap; ap = next) {
-               next = ap;
+               next = ap->next;
                free(ap->mem);
                free(ap);
        }
diff --git a/cc2/parser.c b/cc2/parser.c
index 39a777f..b036fbd 100644
--- a/cc2/parser.c
+++ b/cc2/parser.c
@@ -629,6 +629,7 @@ parse(void)
        cleannodes();  /* remove code of previous function */
        popctx();  /* remove context of previous function */
        curfun = NULL;
+       endf = 0;
 
        while (!endf && nextline())
                /* nothing */;
-- 
2.1.4


Reply via email to