Fixed memory leaks
authorLukas Lueg <lukas.lueg@gmail.com>
Fri, 7 Nov 2014 22:38:16 +0000 (23:38 +0100)
committerLukas Lueg <lukas.lueg@gmail.com>
Fri, 7 Nov 2014 22:38:16 +0000 (23:38 +0100)
include/markdown.h
src/main.c
src/markdown.c
src/parser.c

index d1b81ac..b803f81 100644 (file)
@@ -82,5 +82,6 @@ line_t *next_line(line_t *prev);
 slide_t *new_slide();
 slide_t *next_slide(slide_t *prev);
 deck_t *new_deck();
+void free_deck(deck_t *);
 
 #endif // !defined( MARKDOWN_H )
index 73bc4e0..e1829a8 100644 (file)
@@ -123,5 +123,7 @@ int main(int argc, char *argv[]) {
 
     ncurses_display(deck, notrans, nofade, invert);
 
+    free_deck(deck);
+
     return EXIT_SUCCESS;
 }
index d5dbe19..2db9d68 100644 (file)
@@ -61,3 +61,28 @@ deck_t *new_deck() {
     x->slides = x->headers = 0;
     return x;
 }
+
+void free_line(line_t *l) {
+    line_t *n;
+    while (l) {
+        n = l->next;
+        cstring_delete(l->text);
+        free(l);
+        l = n;
+    }
+}
+
+void free_deck(deck_t *deck) {
+    slide_t *s, *t;
+    if (deck == NULL)
+        return;
+    s = deck->slide;
+    while (s) {
+        free_line(s->line);
+        t = s->next;
+        free(s);
+        s = t;
+    }
+    free_line(deck->header);
+    free(deck);
+}
index 760ef4b..c85af8c 100644 (file)
@@ -161,6 +161,7 @@ deck_t *markdown_load(FILE *input) {
             }
         }
     }
+    cstring_delete(text);
 
     slide->lines = lc;
     deck->slides = sc;