diff options
author | Nick Wellnhofer <wellnhofer@aevum.de> | 2020-01-19 13:46:10 +0100 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2020-01-23 08:25:54 -0800 |
commit | f3f50b29d615d2678d8047dc277b108cc5143167 (patch) | |
tree | ca3f01f6352d2cc2dd7cfc9c96508b800b8cc510 /src/xml.c | |
parent | 3ef0718f9f4c9dea5014a8a0e9a67e2366b9374f (diff) |
Rearrange struct cmark_node
Introduce multi-purpose data/len members in struct cmark_node. This
is mainly used to store literal text for inlines, code and HTML blocks.
Move the content strbuf for blocks from cmark_node to cmark_parser.
When finalizing nodes that allow inlines (paragraphs and headings),
detach the strbuf and store the block content in the node's data/len
members. Free the block content after processing inlines.
Reduces size of struct cmark_node by 8 bytes.
Diffstat (limited to 'src/xml.c')
-rw-r--r-- | src/xml.c | 7 |
1 files changed, 3 insertions, 4 deletions
@@ -61,7 +61,7 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, case CMARK_NODE_HTML_BLOCK: case CMARK_NODE_HTML_INLINE: cmark_strbuf_puts(xml, " xml:space=\"preserve\">"); - escape_xml(xml, node->as.literal.data, node->as.literal.len); + escape_xml(xml, node->data, node->len); cmark_strbuf_puts(xml, "</"); cmark_strbuf_puts(xml, cmark_node_get_type_string(node)); literal = true; @@ -101,8 +101,7 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, cmark_strbuf_putc(xml, '"'); } cmark_strbuf_puts(xml, " xml:space=\"preserve\">"); - escape_xml(xml, node->as.code.literal, - strlen((char *)node->as.code.literal)); + escape_xml(xml, node->data, node->len); cmark_strbuf_puts(xml, "</"); cmark_strbuf_puts(xml, cmark_node_get_type_string(node)); literal = true; @@ -153,7 +152,7 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, char *cmark_render_xml(cmark_node *root, int options) { char *result; - cmark_strbuf xml = CMARK_BUF_INIT(cmark_node_mem(root)); + cmark_strbuf xml = CMARK_BUF_INIT(root->mem); cmark_event_type ev_type; cmark_node *cur; struct render_state state = {&xml, 0}; |