From b237924585e61532ada774bf9e70eadff00666dc Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Sat, 18 Jan 2020 23:12:37 +0100 Subject: Use C string instead of chunk for link URL and title Use zero-terminated C strings instead of cmark_chunks without storing the length. This introduces a few additional strlen computations, but overhead should be low. Allows to reduce size of struct cmark_node later. --- src/html.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'src/html.c') diff --git a/src/html.c b/src/html.c index 161e9f9..85bd704 100644 --- a/src/html.c +++ b/src/html.c @@ -280,13 +280,14 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, if (entering) { cmark_strbuf_puts(html, "as.link.url, 0))) { - houdini_escape_href(html, node->as.link.url.data, - node->as.link.url.len); + !(_scan_dangerous_url(node->as.link.url))) { + houdini_escape_href(html, node->as.link.url, + strlen((char *)node->as.link.url)); } - if (node->as.link.title.len) { + if (node->as.link.title) { cmark_strbuf_puts(html, "\" title=\""); - escape_html(html, node->as.link.title.data, node->as.link.title.len); + escape_html(html, node->as.link.title, + strlen((char *)node->as.link.title)); } cmark_strbuf_puts(html, "\">"); } else { @@ -298,16 +299,17 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, if (entering) { cmark_strbuf_puts(html, "as.link.url, 0))) { - houdini_escape_href(html, node->as.link.url.data, - node->as.link.url.len); + !(_scan_dangerous_url(node->as.link.url))) { + houdini_escape_href(html, node->as.link.url, + strlen((char *)node->as.link.url)); } cmark_strbuf_puts(html, "\" alt=\""); state->plain = node; } else { - if (node->as.link.title.len) { + if (node->as.link.title) { cmark_strbuf_puts(html, "\" title=\""); - escape_html(html, node->as.link.title.data, node->as.link.title.len); + escape_html(html, node->as.link.title, + strlen((char *)node->as.link.title)); } cmark_strbuf_puts(html, "\" />"); -- cgit v1.2.3