summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn MacFarlane <fiddlosopher@gmail.com>2014-11-11 12:51:54 -0800
committerJohn MacFarlane <fiddlosopher@gmail.com>2014-11-11 12:52:41 -0800
commit3739c54c9a3ce1f79452548a49f82878868fa6d0 (patch)
tree020196e9df40d35f9eb5c67cb550db8c8e8a0e4c /src
parentcb744bd09103321b18ee979edac2cb26a414f7be (diff)
Improved cmark_markdown_to_html.
Added length parameter so we can avoid strlen. Properly free buffer.
Diffstat (limited to 'src')
-rw-r--r--src/cmark.c10
-rw-r--r--src/cmark.h2
2 files changed, 8 insertions, 4 deletions
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
}