pinosaur
/
smdp.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add vi-ish navigation to first and last slide
[smdp.git]
/
src
/
parser.c
diff --git
a/src/parser.c
b/src/parser.c
index
760ef4b
..
f835a5c
100644
(file)
--- a/
src/parser.c
+++ b/
src/parser.c
@@
-82,7
+82,7
@@
deck_t *markdown_load(FILE *input) {
} else {
// if slide ! has line
} else {
// if slide ! has line
- if(!slide->line) {
+ if(!slide->line
|| !line
) {
// create new line
line = new_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;
slide->lines = lc;
deck->slides = sc;
@@
-173,21
+174,29
@@
deck_t *markdown_load(FILE *input) {
deck->header = line;
// find first non-header line
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;
}
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;
}
slide = deck->slide;