X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=src%2Fparser.c;h=f835a5c6fe2d47dcb99fa9dc2dc22fb5d4f65115;hb=aaef0d22541650ed73e094363e1886943ca035d3;hp=760ef4b49ece5956d83e44188b88fc5be87be302;hpb=5f369c826ac0ca4989892b3691f66d0ac73679f3;p=smdp.git diff --git a/src/parser.c b/src/parser.c index 760ef4b..f835a5c 100644 --- a/src/parser.c +++ b/src/parser.c @@ -82,7 +82,7 @@ deck_t *markdown_load(FILE *input) { } else { // if slide ! has line - if(!slide->line) { + if(!slide->line || !line) { // create new line line = new_line(); @@ -161,6 +161,7 @@ deck_t *markdown_load(FILE *input) { } } } + (text->delete)(text); slide->lines = lc; deck->slides = sc; @@ -173,21 +174,29 @@ deck_t *markdown_load(FILE *input) { deck->header = line; // find first non-header line - while(line->text->size > 0 && line->text->text[0] == '%') { + while(line && line->text->size > 0 && line->text->text[0] == '%') { hc++; line = line->next; } - // split linked list - line->prev->next = NULL; - line->prev = NULL; + // only split header if any non-header line is found + if(line) { - // remove header lines from slide - deck->slide->line = line; + // split linked list + line->prev->next = NULL; + line->prev = NULL; - // adjust counts - deck->headers += hc; - deck->slide->lines -= hc; + // remove header lines from slide + deck->slide->line = line; + + // adjust counts + deck->headers += hc; + deck->slide->lines -= hc; + } else { + + // remove header from deck + deck->header = NULL; + } } slide = deck->slide;