diff options
author | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2016-02-21 04:58:13 +0100 |
---|---|---|
committer | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2016-02-21 05:01:13 +0100 |
commit | 31d376735ab2aaaed0934edcce676113f83a7de7 (patch) | |
tree | 3afb9cfd7805f4da4ccb0fca203e4e693c32e1f5 /src/content-parser.c | |
parent | 9d5dd44c68aefa006d06fbff55756a070a84b55b (diff) | |
download | blogc-31d376735ab2aaaed0934edcce676113f83a7de7.tar.gz blogc-31d376735ab2aaaed0934edcce676113f83a7de7.tar.bz2 blogc-31d376735ab2aaaed0934edcce676113f83a7de7.zip |
content-parser: fixed parser bug when handling links
do not handle something like this as a valid link:
[asd] asd (asd)
Diffstat (limited to 'src/content-parser.c')
-rw-r--r-- | src/content-parser.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/content-parser.c b/src/content-parser.c index a334d28..9d4adf6 100644 --- a/src/content-parser.c +++ b/src/content-parser.c @@ -161,6 +161,16 @@ blogc_content_parse_inline(const char *src) if (c != ' ' && c != '\n' && c != '\r') spaces = 0; + if (state == LINK_TEXT_CLOSE && c != ' ' && c != '\n' && c != '\r' && + c != '(') + { + b_string_append_c(rv, src[start_state]); + tmp = blogc_content_parse_inline(src + start_state + 1); + b_string_append(rv, tmp); + // no need to free here, we will exit the loop! + break; + } + switch (c) { case '\\': @@ -390,8 +400,7 @@ blogc_content_parse_inline(const char *src) b_string_append_c(rv, src[start_state]); tmp = blogc_content_parse_inline(src + start_state + 1); b_string_append(rv, tmp); - free(tmp); - tmp = NULL; + // no need to free here, its the last iteration } current++; } |