summaryrefslogtreecommitdiff
path: root/src/blocks.c
diff options
context:
space:
mode:
authorAshe Connor <[email protected]>2017-11-02 19:58:10 +1100
committerGitHub <[email protected]>2017-11-02 19:58:10 +1100
commit1326fd0d8d945b1eb33c5c5d2f536c6fda0201d1 (patch)
tree0177899c8713b2bf13c437c83dabd54032463d6e /src/blocks.c
parent9853666272e87c83050f7e30ae4b3ed9890c8c4f (diff)
parent5da792fc3714f66a88aabb5d13cb0eed674cb6c5 (diff)
Merge branch 'master' into upstream/inline-sourcepos
Diffstat (limited to 'src/blocks.c')
-rw-r--r--src/blocks.c12
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