diff options
author | Nick Wellnhofer <wellnhofer@aevum.de> | 2014-11-23 14:00:00 +0100 |
---|---|---|
committer | Nick Wellnhofer <wellnhofer@aevum.de> | 2014-11-23 14:00:00 +0100 |
commit | f2e6aaf9b9c3a5108b1d89d6c70a6ae93cecf690 (patch) | |
tree | 5bb69d58c93d70e46c4262a1be7e7beb60f048f1 | |
parent | 4570eb2bff2e1b71fa5b6408abbc69c98ff5ff24 (diff) |
Fix segfault on docs without trailing newline
-rw-r--r-- | api_test/main.c | 13 | ||||
-rw-r--r-- | src/blocks.c | 2 |
2 files changed, 14 insertions, 1 deletions
diff --git a/api_test/main.c b/api_test/main.c index 4ee3546..085d458 100644 --- a/api_test/main.c +++ b/api_test/main.c @@ -441,6 +441,18 @@ test_content(test_batch_runner *runner, cmark_node_type type, } static void +parser(test_batch_runner *runner) +{ + static const char markdown[] = "No newline"; + cmark_node *doc = cmark_parse_document(markdown, sizeof(markdown) - 1); + char *html = cmark_render_html(doc); + STR_EQ(runner, html, "<p>No newline</p>\n", + "document without trailing newline"); + free(html); + cmark_node_destroy(doc); +} + +static void render_html(test_batch_runner *runner) { char *html; @@ -479,6 +491,7 @@ int main() { node_check(runner); create_tree(runner); hierarchy(runner); + parser(runner); render_html(runner); test_print_summary(runner); diff --git a/src/blocks.c b/src/blocks.c index 2a6cdd8..c74b425 100644 --- a/src/blocks.c +++ b/src/blocks.c @@ -441,7 +441,7 @@ extern cmark_node *cmark_parse_document(const char *buffer, size_t len) while (buffer < end) { const char *eol = memchr(buffer, '\n', end - buffer); - offset = eol ? (eol - buffer) + 1 : eol - buffer; + offset = eol ? (eol - buffer) + 1 : end - buffer; cmark_process_line(parser, buffer, offset); buffer += offset; linenum++; |