cmark

My personal build of CMark ✏️

Commit
46b67b710788be7924b5a412ab68eea3cac0cd96
Parent
cdcd29f27a25334817026afaf4501bb146d66f10
Author
John MacFarlane <jgm@berkeley.edu>
Date

man: use a variable to store the char * from node_get_url.

We get segfaults on some platforms when we do

cmark_strbuf_printf(man, " (%s)", cmark_node_get_url(node));

but they go away with:

url = cmark_node_get_url(node); cmark_strbuf_printf(man, " (%s)", url);

I don't understand why.

Closes #253.

Diffstat

1 file changed, 3 insertions, 2 deletions

Status File Name N° Changes Insertions Deletions
Modified src/man.c 5 3 2
diff --git a/src/man.c b/src/man.c
@@ -49,6 +49,7 @@ S_render_node(cmark_node *node, cmark_event_type ev_type, void *vstate)
 	cmark_node *tmp;
 	cmark_strbuf *man = state->man;
 	int list_number;
+	const char *url;
 	bool entering = (ev_type == CMARK_EVENT_ENTER);
 
 	if (state->plain == node) { // back at original node
@@ -203,8 +204,8 @@ S_render_node(cmark_node *node, cmark_event_type ev_type, void *vstate)
 
 	case CMARK_NODE_LINK:
 		if (!entering) {
-			cmark_strbuf_printf(man, " (%s)",
-				      cmark_node_get_url(node));
+			url = cmark_node_get_url(node);
+			cmark_strbuf_printf(man, " (%s)", url);
 		}
 		break;