From 6cef5617423400fdfdbbeb9e2b0d2de8b6c2253d Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Sat, 4 Jul 2015 19:56:05 -0300 Subject: content-parser: fixed bug when using inline delim in link title --- src/content-parser.c | 14 +++++++------- tests/check_content_parser.c | 8 ++++++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/content-parser.c b/src/content-parser.c index fa17ab8..8821a17 100644 --- a/src/content-parser.c +++ b/src/content-parser.c @@ -109,7 +109,7 @@ blogc_content_parse_inline(const char *src) switch (c) { case '\\': - if (open_code || open_code_double) { + if (state == LINK_CLOSED && (open_code || open_code_double)) { b_string_append_c(rv, c); break; } @@ -119,7 +119,7 @@ blogc_content_parse_inline(const char *src) case '*': case '_': - if (open_code || open_code_double) { + if (state == LINK_CLOSED && (open_code || open_code_double)) { b_string_append_c(rv, c); break; } @@ -176,7 +176,7 @@ blogc_content_parse_inline(const char *src) break; case '!': - if (open_code || open_code_double) { + if (state == LINK_CLOSED && (open_code || open_code_double)) { b_string_append_c(rv, c); break; } @@ -188,7 +188,7 @@ blogc_content_parse_inline(const char *src) break; case '[': - if (open_code || open_code_double) { + if (state == LINK_CLOSED && (open_code || open_code_double)) { b_string_append_c(rv, c); break; } @@ -212,7 +212,7 @@ blogc_content_parse_inline(const char *src) break; case ']': - if (open_code || open_code_double) { + if (state == LINK_CLOSED && (open_code || open_code_double)) { b_string_append_c(rv, c); break; } @@ -246,7 +246,7 @@ blogc_content_parse_inline(const char *src) break; case '(': - if (open_code || open_code_double) { + if (state == LINK_CLOSED && (open_code || open_code_double)) { b_string_append_c(rv, c); break; } @@ -260,7 +260,7 @@ blogc_content_parse_inline(const char *src) break; case ')': - if (open_code || open_code_double) { + if (state == LINK_CLOSED && (open_code || open_code_double)) { b_string_append_c(rv, c); break; } diff --git a/tests/check_content_parser.c b/tests/check_content_parser.c index 365b309..cb497cb 100644 --- a/tests/check_content_parser.c +++ b/tests/check_content_parser.c @@ -862,6 +862,14 @@ test_content_parse_inline_link(void **state) assert_non_null(html); assert_string_equal(html, "bo\nla\n"); free(html); + html = blogc_content_parse_inline("[``bola``](http://example.org/)\n"); + assert_non_null(html); + assert_string_equal(html, "bola\n"); + free(html); + html = blogc_content_parse_inline("[``bola(2)[3]**!\\``](http://example.org/)\n"); + assert_non_null(html); + assert_string_equal(html, "bola(2)[3]**!\\\n"); + free(html); // "invalid" html = blogc_content_parse_inline("[bola](\nhttp://example.org/)\n"); assert_non_null(html); -- cgit v1.2.3-18-g5258