From fd7887566297623cde57131257720bb22b8117a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Offenh=C3=A4user?= Date: Tue, 21 Mar 2023 20:02:11 +0100 Subject: [PATCH] LibPDF: Fix navigate_to_before_eof_marker() for PDFs not ending in EOL The way this was factored before, we would miss the %%EOF marker if it didn't have a valid end-of-line sequence after it. --- Userland/Libraries/LibPDF/DocumentParser.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/Userland/Libraries/LibPDF/DocumentParser.cpp b/Userland/Libraries/LibPDF/DocumentParser.cpp index e2c1538e6e..7d7f3d1f9b 100644 --- a/Userland/Libraries/LibPDF/DocumentParser.cpp +++ b/Userland/Libraries/LibPDF/DocumentParser.cpp @@ -692,19 +692,13 @@ bool DocumentParser::navigate_to_before_eof_marker() m_reader.set_reading_backwards(); while (!m_reader.done()) { + m_reader.consume_eol(); + if (m_reader.matches("%%EOF")) { + m_reader.move_by(5); + return true; + } + m_reader.move_until([&](auto) { return m_reader.matches_eol(); }); - if (m_reader.done()) - return false; - - m_reader.consume_eol(); - if (!m_reader.matches("%%EOF")) - continue; - - m_reader.move_by(5); - if (!m_reader.matches_eol()) - continue; - m_reader.consume_eol(); - return true; } return false;