cmark

My personal build of CMark ✏️

Commit
b56b8cbe99222ce5e1ab0d144a95cb697b93761d
Parent
ca1e1cde8693b16907efe19b2b9ea9d61dbf3129
Author
John MacFarlane <jgm@berkeley.edu>
Date

Made block-freeing slightly more efficient by using last_child.

Diffstat

1 file changed, 2 insertions, 8 deletions

Status File Name N° Changes Insertions Deletions
Modified src/blocks.c 10 2 8
diff --git a/src/blocks.c b/src/blocks.c
@@ -257,7 +257,6 @@ static node_block* add_child(node_block* parent,
 void cmark_free_nodes(node_block *e)
 {
 	node_block * next;
-	node_block * tmp;
 	while (e != NULL) {
 		free_inlines(e->inline_content);
 		strbuf_free(&e->string_content);
@@ -266,14 +265,9 @@ void cmark_free_nodes(node_block *e)
 		} else if (e->tag == BLOCK_DOCUMENT) {
 			reference_map_free(e->as.document.refmap);
 		}
-		tmp = e->children;
-		if (tmp) {
-		    // Find last child
-		    while (tmp->next) {
-			tmp = tmp->next;
-		    }
+		if (e->last_child) {
 		    // Splice children into list
-		    tmp->next = e->next;
+		    e->last_child->next = e->next;
 		    e->next = e->children;
 		}
 		next = e->next;