From: Fletcher T. Penney Date: Wed, 6 Dec 2017 02:22:00 +0000 (-0500) Subject: FIXED: Fix bug with setting tail in token prune/graft X-Git-Tag: 6.3.0^2~16 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=13a27ddfd2ee467fc2fdc60dd20f7f7b0ec077cb;p=multimarkdown FIXED: Fix bug with setting tail in token prune/graft --- diff --git a/Sources/libMultiMarkdown/critic_markup.c b/Sources/libMultiMarkdown/critic_markup.c index 604fef8..0ad27c5 100644 --- a/Sources/libMultiMarkdown/critic_markup.c +++ b/Sources/libMultiMarkdown/critic_markup.c @@ -406,10 +406,20 @@ void Test_critic(CuTest* tc) { mmd_critic_markup_accept(test); CuAssertStrEquals(tc, "", test->str); + d_string_erase(test, 0, -1); + d_string_append(test, "{++foo++}{>>bar<<}"); + mmd_critic_markup_accept(test); + CuAssertStrEquals(tc, "foo", test->str); + + d_string_erase(test, 0, -1); + d_string_append(test, "{++foo++}{>>bar<<}"); + mmd_critic_markup_reject(test); + CuAssertStrEquals(tc, "", test->str); + + #ifdef kUseObjectPool // Decrement counter and clean up token pool token_pool_drain(); - #ifdef kUseObjectPool token_pool_free(); #endif } diff --git a/Sources/libMultiMarkdown/token.c b/Sources/libMultiMarkdown/token.c index a088d5e..9b79ccd 100644 --- a/Sources/libMultiMarkdown/token.c +++ b/Sources/libMultiMarkdown/token.c @@ -369,9 +369,16 @@ token * token_prune_graft(token * first, token * last, unsigned short container_ next->prev = first; } - // Fix tail + // Fix tail (prior tail is now a child) if (first->next == NULL) { + token * walker = first; + + while (walker->prev) { + walker = walker->prev; + } + first->tail = first; + walker->tail = first; } return first;