diff options
author | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2015-07-04 19:56:05 -0300 |
---|---|---|
committer | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2015-07-04 19:56:05 -0300 |
commit | 6cef5617423400fdfdbbeb9e2b0d2de8b6c2253d (patch) | |
tree | 2f15d8f7c70e1a8ee20c8cd7a93d712dc03d565d | |
parent | 8c761376ab6921b74364f89e99eeb9a810abb3ce (diff) | |
download | blogc-6cef5617423400fdfdbbeb9e2b0d2de8b6c2253d.tar.gz blogc-6cef5617423400fdfdbbeb9e2b0d2de8b6c2253d.tar.bz2 blogc-6cef5617423400fdfdbbeb9e2b0d2de8b6c2253d.zip |
content-parser: fixed bug when using inline delim in link title
-rw-r--r-- | src/content-parser.c | 14 | ||||
-rw-r--r-- | 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, "<a href=\"http://example.org/\">bo\nla</a>\n"); free(html); + html = blogc_content_parse_inline("[``bola``](http://example.org/)\n"); + assert_non_null(html); + assert_string_equal(html, "<a href=\"http://example.org/\"><code>bola</code></a>\n"); + free(html); + html = blogc_content_parse_inline("[``bola(2)[3]**!\\``](http://example.org/)\n"); + assert_non_null(html); + assert_string_equal(html, "<a href=\"http://example.org/\"><code>bola(2)[3]**!\\</code></a>\n"); + free(html); // "invalid" html = blogc_content_parse_inline("[bola](\nhttp://example.org/)\n"); assert_non_null(html); |