From af056718437f23e895f45e9b6c473d37a3e5f699 Mon Sep 17 00:00:00 2001 From: AnotherTest Date: Mon, 26 Oct 2020 05:22:07 +0330 Subject: [PATCH] LibMarkdown: Flush the pending paragraphs when encountering empty lines Fixes #3854. --- Libraries/LibMarkdown/Document.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Libraries/LibMarkdown/Document.cpp b/Libraries/LibMarkdown/Document.cpp index 3e036dab16..2bd283c920 100644 --- a/Libraries/LibMarkdown/Document.cpp +++ b/Libraries/LibMarkdown/Document.cpp @@ -83,12 +83,20 @@ OwnPtr Document::parse(const StringView& str) auto& blocks = document->m_blocks; NonnullOwnPtrVector paragraph_lines; + auto flush_paragraph = [&] { + if (paragraph_lines.is_empty()) + return; + auto paragraph = make(move(paragraph_lines)); + document->m_blocks.append(move(paragraph)); + paragraph_lines.clear(); + }; while (true) { if (lines.is_end()) break; if ((*lines).is_empty()) { ++lines; + flush_paragraph(); continue; } @@ -98,10 +106,8 @@ OwnPtr Document::parse(const StringView& str) if (any) { if (!paragraph_lines.is_empty()) { auto last_block = document->m_blocks.take_last(); - auto paragraph = make(move(paragraph_lines)); - document->m_blocks.append(move(paragraph)); + flush_paragraph(); document->m_blocks.append(move(last_block)); - paragraph_lines.clear(); } continue; } @@ -113,10 +119,8 @@ OwnPtr Document::parse(const StringView& str) paragraph_lines.append(line.release_nonnull()); } - if (!paragraph_lines.is_empty()) { - auto paragraph = make(move(paragraph_lines)); - document->m_blocks.append(move(paragraph)); - } + if (!paragraph_lines.is_empty()) + flush_paragraph(); return document; }