fix header-only file crash, fixes #67
[smdp.git] / src / markdown.c
index d5dbe19..8471724 100644 (file)
@@ -61,3 +61,31 @@ deck_t *new_deck() {
     x->slides = x->headers = 0;
     return x;
 }
+
+void free_line(line_t *line) {
+    line_t *next;
+    while (line) {
+        next = line->next;
+        if(line->text)
+            (line->text->delete)(line->text);
+        free(line);
+        line = next;
+    }
+}
+
+void free_deck(deck_t *deck) {
+    slide_t *slide, *next;
+    if (deck == NULL)
+        return;
+    slide = deck->slide;
+    while (slide) {
+        free_line(slide->line);
+        next = slide->next;
+        if (slide == NULL)
+            return;
+        free(slide);
+        slide = next;
+    }
+    free_line(deck->header);
+    free(deck);
+}