summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Bartel <karl42@gmail.com>2019-10-02 13:07:03 +0200
committerEnno Boland <g@s01.de>2020-07-01 08:56:22 +0200
commit028a8dadd1f61f5b773b773b022ad2ccb86e3ddc (patch)
treec3f170b9bb057875775682b4495a50c806d7855a
parent7fa950993c6d6deafe7787547951abdcec6e1a55 (diff)
Lists only continue when using same marker
``` - foo - bar + baz ``` is two lists (see https://spec.commonmark.org/0.29/#example-271)
-rw-r--r--smu.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/smu.c b/smu.c
index cc80ca2..8194591 100644
--- a/smu.c
+++ b/smu.c
@@ -327,6 +327,7 @@ dolist(const char *begin, const char *end, int newblock) {
unsigned int i, j, indent, run, ul, isblock;
const char *p, *q;
char *buffer = NULL;
+ char marker;
isblock = 0;
if(newblock)
@@ -336,9 +337,10 @@ dolist(const char *begin, const char *end, int newblock) {
else
return 0;
q = p;
- if(*p == '-' || *p == '*' || *p == '+')
+ if(*p == '-' || *p == '*' || *p == '+') {
ul = 1;
- else {
+ marker = *p;
+ } else {
ul = 0;
for(; p < end && *p >= '0' && *p <= '9'; p++);
if(p >= end || *p != '.')
@@ -368,7 +370,7 @@ dolist(const char *begin, const char *end, int newblock) {
}
q = p + 1;
j = 0;
- if(ul && (*q == '-' || *q == '*' || *q == '+'))
+ if(ul && *q == marker)
j = 1;
else if(!ul) {
for(; q + j != end && q[j] >= '0' && q[j] <= '9' && j < indent; j++);