Just had a play with this newfangled `valgrind' memory debugger
[sgt/halibut] / input.c
diff --git a/input.c b/input.c
index 2e0dabf..d4ecaeb 100644 (file)
--- a/input.c
+++ b/input.c
@@ -547,7 +547,7 @@ static void read_file(paragraph ***ret, input *in, indexdata *idx) {
        }
        already = FALSE;
        if (t.type == tok_eof)
-           return;
+           break;
 
        /*
         * Parse code paragraphs separately.
@@ -1181,6 +1181,11 @@ static void read_file(paragraph ***ret, input *in, indexdata *idx) {
        stk_free(parsestk);
        addpara(par, ret);
     }
+
+    /*
+     * We break to here rather than returning, because otherwise
+     * this cleanup doesn't happen.
+     */
     dtor(t);
     macrocleanup(macros);
 }