From 3739c54c9a3ce1f79452548a49f82878868fa6d0 Mon Sep 17 00:00:00 2001
From: John MacFarlane <fiddlosopher@gmail.com>
Date: Tue, 11 Nov 2014 12:51:54 -0800
Subject: Improved cmark_markdown_to_html.

Added length parameter so we can avoid strlen.
Properly free buffer.
---
 src/cmark.c | 10 +++++++---
 src/cmark.h |  2 +-
 2 files changed, 8 insertions(+), 4 deletions(-)

(limited to 'src')

diff --git a/src/cmark.c b/src/cmark.c
index 064c080..ef98d79 100644
--- a/src/cmark.c
+++ b/src/cmark.c
@@ -5,15 +5,19 @@
 #include "cmark.h"
 #include "buffer.h"
 
-extern unsigned char *cmark_markdown_to_html(unsigned char *text)
+extern unsigned char *cmark_markdown_to_html(unsigned char *text, int len)
 {
 	node_block *blocks;
 	strbuf htmlbuf = GH_BUF_INIT;
+	unsigned char *result;
 
-	blocks = cmark_parse_document(text, sizeof(text));
+	blocks = cmark_parse_document(text, len);
 
 	cmark_render_html(&htmlbuf, blocks);
 	cmark_free_nodes(blocks);
 
-	return strbuf_detach(&htmlbuf);
+	result = strbuf_detach(&htmlbuf);
+	strbuf_free(&htmlbuf);
+
+	return result;
 }
diff --git a/src/cmark.h b/src/cmark.h
index 6347901..5f0d5f7 100644
--- a/src/cmark.h
+++ b/src/cmark.h
@@ -118,7 +118,7 @@ void cmark_free_nodes(node_block *e);
 void cmark_debug_print(node_block *root);
 void cmark_render_html(strbuf *html, node_block *root);
 
-unsigned char *cmark_markdown_to_html(unsigned char *text);
+unsigned char *cmark_markdown_to_html(unsigned char *text, int len);
 
 #ifdef __cplusplus
 }
-- 
cgit v1.2.3