From 89c8d703d258cef7cbe566eab537fb8f30aad7ed Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Tue, 11 Oct 2016 14:40:05 +0200 Subject: Changed logic for null/eol checks. - only check once for "not at end of line" - check for null before we check for newline characters (the previous patch would fail for NULL + CR) See #160. --- src/blocks.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/blocks.c') diff --git a/src/blocks.c b/src/blocks.c index a88c168..4a6b7ef 100644 --- a/src/blocks.c +++ b/src/blocks.c @@ -569,16 +569,21 @@ static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer, } buffer += chunk_len; - // skip over line ending characters: - if (buffer < end && *buffer == '\r') { - buffer++; - if (buffer == end) - parser->last_buffer_ended_with_cr = true; + if (buffer < end) { + if (*buffer == '\0') { + // skip over NULL + buffer++; + } else { + // skip over line ending characters + if (*buffer == '\r') { + buffer++; + if (buffer == end) + parser->last_buffer_ended_with_cr = true; + } + if (*buffer == '\n') + buffer++; + } } - if (buffer < end && *buffer == '\0') - buffer++; - else if (buffer < end && *buffer == '\n') - buffer++; } } -- cgit v1.2.3