Lists only continue when using same marker

```
- foo
- bar
+ baz
```
is two lists (see https://spec.commonmark.org/0.29/#example-271)
This commit is contained in:
Karl Bartel 2019-10-02 13:07:03 +02:00 committed by Enno Boland
parent 7fa950993c
commit 028a8dadd1

8
smu.c
View file

@ -327,6 +327,7 @@ dolist(const char *begin, const char *end, int newblock) {
unsigned int i, j, indent, run, ul, isblock; unsigned int i, j, indent, run, ul, isblock;
const char *p, *q; const char *p, *q;
char *buffer = NULL; char *buffer = NULL;
char marker;
isblock = 0; isblock = 0;
if(newblock) if(newblock)
@ -336,9 +337,10 @@ dolist(const char *begin, const char *end, int newblock) {
else else
return 0; return 0;
q = p; q = p;
if(*p == '-' || *p == '*' || *p == '+') if(*p == '-' || *p == '*' || *p == '+') {
ul = 1; ul = 1;
else { marker = *p;
} else {
ul = 0; ul = 0;
for(; p < end && *p >= '0' && *p <= '9'; p++); for(; p < end && *p >= '0' && *p <= '9'; p++);
if(p >= end || *p != '.') if(p >= end || *p != '.')
@ -368,7 +370,7 @@ dolist(const char *begin, const char *end, int newblock) {
} }
q = p + 1; q = p + 1;
j = 0; j = 0;
if(ul && (*q == '-' || *q == '*' || *q == '+')) if(ul && *q == marker)
j = 1; j = 1;
else if(!ul) { else if(!ul) {
for(; q + j != end && q[j] >= '0' && q[j] <= '9' && j < indent; j++); for(; q + j != end && q[j] >= '0' && q[j] <= '9' && j < indent; j++);