From 4fce2bfe47f4ffcc17ff72d0c1dc2ddd9bd7e4d5 Mon Sep 17 00:00:00 2001 From: "gottox@rootkit.lan" Date: Thu, 13 Dec 2007 13:04:11 +0100 Subject: [PATCH] Fixed dolist bug reported by Szabolcs New handling of newlines. --- cmarkdown.c | 56 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/cmarkdown.c b/cmarkdown.c index 9bc3474..ac1a133 100644 --- a/cmarkdown.c +++ b/cmarkdown.c @@ -244,16 +244,15 @@ dolist(const char *begin, const char *end) { if(p[1] == '\n') p++; q = p; - if(strchr("+-*",p[1]) && p[2] == ' ') { + if((p[1] == '-' || p[1] == '*' || p[1] == '+') && p[2] == ' ') { ul = 1; p++; } else { - for(p++; *p && p != end && *p <= '0' && *p >= '9';p++); - p++; + ul = 0; + for(p++; *p && p != end && *p >= '0' && *p <= '9';p++); if(!*p || p[0] != '.' || p[1] != ' ') return 0; - ul = 0; } for(p++; *p && p != end && *p == ' '; p++); indent = p - q - 1; @@ -263,40 +262,51 @@ dolist(const char *begin, const char *end) { puts(ul ? "" : ""); free(buffer); + p--; while(*(--p) == '\n'); return p + 1 - begin; } @@ -445,7 +455,7 @@ dounderline(const char *begin, const char *end) { void process(const char *begin, const char *end) { - const char *p; + const char *p, *q; int affected; unsigned int i; @@ -456,7 +466,10 @@ process(const char *begin, const char *end) { if(affected) p += affected; else { - if(nohtml) + for(q = p; *q == '\n' && q != end; q++); + if(q == end) + return; + else if(nohtml) hprint(p,p+1); else putchar(*p); @@ -496,5 +509,6 @@ main(int argc, char *argv[]) { } } process(buffer,buffer+strlen(buffer)); + putchar('\n'); free(buffer); }