summaryrefslogtreecommitdiff
path: root/src/iterator.c
diff options
context:
space:
mode:
authorNick Wellnhofer <wellnhofer@aevum.de>2020-01-19 00:51:02 +0100
committerJohn MacFarlane <jgm@berkeley.edu>2020-01-23 08:25:54 -0800
commitb0a4cfa36e99c27dd2b20be8f8888fa7721bad58 (patch)
tree528ace24d0526b0dd647bcd774f348e677b78a9f /src/iterator.c
parent75b48c5938f5984dbcf79a579d15c9cbd6447d12 (diff)
Use C string instead of chunk for literal text
Use zero-terminated C strings and a separate length field instead of cmark_chunks. Literal inline text will now be copied from the parent block's content buffer, slowing the benchmark down by 10-15%. The node struct never references memory of other nodes now, fixing #309. Node accessors don't have to check for delayed creation of C strings, so parsing and iterating all literals using the public API should actually be faster than before.
Diffstat (limited to 'src/iterator.c')
-rw-r--r--src/iterator.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/iterator.c b/src/iterator.c
index f5cd802..cd7db8e 100644
--- a/src/iterator.c
+++ b/src/iterator.c
@@ -111,8 +111,9 @@ void cmark_consolidate_text_nodes(cmark_node *root) {
cmark_node_free(tmp);
tmp = next;
}
- cmark_chunk_free(iter->mem, &cur->as.literal);
- cur->as.literal = cmark_chunk_buf_detach(&buf);
+ iter->mem->free(cur->as.literal.data);
+ cur->as.literal.len = buf.size;
+ cur->as.literal.data = cmark_strbuf_detach(&buf);
}
}