diff options
author | Ashe Connor <[email protected]> | 2017-11-02 19:58:10 +1100 |
---|---|---|
committer | GitHub <[email protected]> | 2017-11-02 19:58:10 +1100 |
commit | 1326fd0d8d945b1eb33c5c5d2f536c6fda0201d1 (patch) | |
tree | 0177899c8713b2bf13c437c83dabd54032463d6e /src/blocks.c | |
parent | 9853666272e87c83050f7e30ae4b3ed9890c8c4f (diff) | |
parent | 5da792fc3714f66a88aabb5d13cb0eed674cb6c5 (diff) |
Merge branch 'master' into upstream/inline-sourcepos
Diffstat (limited to 'src/blocks.c')
-rw-r--r-- | src/blocks.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/blocks.c b/src/blocks.c index acdbb34..7f58ffd 100644 --- a/src/blocks.c +++ b/src/blocks.c @@ -255,17 +255,21 @@ static cmark_node *finalize(cmark_parser *parser, cmark_node *b) { switch (S_type(b)) { case CMARK_NODE_PARAGRAPH: - while (cmark_strbuf_at(node_content, 0) == '[' && - (pos = cmark_parse_reference_inline(parser->mem, node_content, - parser->refmap))) { + { + cmark_chunk chunk = {node_content->ptr, node_content->size, 0}; + while (chunk.len && chunk.data[0] == '[' && + (pos = cmark_parse_reference_inline(parser->mem, &chunk, parser->refmap))) { - cmark_strbuf_drop(node_content, pos); + chunk.data += pos; + chunk.len -= pos; } + cmark_strbuf_drop(node_content, (node_content->size - chunk.len)); if (is_blank(node_content, 0)) { // remove blank node (former reference def) cmark_node_free(b); } break; + } case CMARK_NODE_CODE_BLOCK: if (!b->as.code.fenced) { // indented code |