X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=src%2Fmarkdown.c;h=c03d307740812dcb65f8e0765966e375b0f8eeb5;hb=354cf2e07ccd0d7900f96bffc279093997cbe203;hp=6e7d15f1c29168d52f823f1d3f4335f079f04f34;hpb=6f9f33a6a5c7d677b4f4464218c01580a391cf08;p=smdp.git diff --git a/src/markdown.c b/src/markdown.c index 6e7d15f..c03d307 100644 --- a/src/markdown.c +++ b/src/markdown.c @@ -1,6 +1,6 @@ /* * An implementation of markdown objects. - * Copyright (C) 2014 Michael Goehler + * Copyright (C) 2018 Michael Goehler * * This file is part of mdp. * @@ -26,8 +26,8 @@ line_t *new_line() { line_t *x = malloc(sizeof(line_t)); - x->text = (void*)0; - x->prev = x->next = (void*)0; + x->text = NULL; + x->prev = x->next = NULL; x->bits = x->length = x->offset = 0; return x; } @@ -41,9 +41,9 @@ line_t *next_line(line_t *prev) { slide_t *new_slide() { slide_t *x = malloc(sizeof(slide_t)); - x->line = (void*)0; - x->prev = x->next = (void*)0; - x->lines = 0; + x->line = NULL; + x->prev = x->next = NULL; + x->lines = x->stop = 0; return x; } @@ -56,9 +56,34 @@ slide_t *next_slide(slide_t *prev) { deck_t *new_deck() { deck_t *x = malloc(sizeof(deck_t)); - x->header = (void*)0; - x->slide = (void*)0; + x->header = NULL; + x->slide = new_slide(); 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; + free(slide); + slide = next; + } + free_line(deck->header); + free(deck); +}