From 60c3e786be575e5e8494cdb404489134af940f1b Mon Sep 17 00:00:00 2001 From: Matthew Olsson Date: Tue, 22 Mar 2022 19:22:45 -0700 Subject: [PATCH] LibPDF: Require Document* in Parser constructor This makes it a bit easier to avoid calling parser->set_document, an issue which cost me ~30 minutes to find. --- Userland/Libraries/LibPDF/Parser.cpp | 7 ++++--- Userland/Libraries/LibPDF/Parser.h | 4 ++-- Userland/Libraries/LibPDF/Renderer.cpp | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Userland/Libraries/LibPDF/Parser.cpp b/Userland/Libraries/LibPDF/Parser.cpp index 89b8109886..e4216b1d3d 100644 --- a/Userland/Libraries/LibPDF/Parser.cpp +++ b/Userland/Libraries/LibPDF/Parser.cpp @@ -22,14 +22,15 @@ static NonnullRefPtr make_object(Args... args) requires(IsBaseOf) return adopt_ref(*new T(forward(args)...)); } -PDFErrorOr> Parser::parse_graphics_commands(ReadonlyBytes bytes) +PDFErrorOr> Parser::parse_graphics_commands(Document* document, ReadonlyBytes bytes) { - auto parser = adopt_ref(*new Parser(bytes)); + auto parser = adopt_ref(*new Parser(document, bytes)); return parser->parse_graphics_commands(); } -Parser::Parser(Badge, ReadonlyBytes bytes) +Parser::Parser(Document* document, ReadonlyBytes bytes) : m_reader(bytes) + , m_document(document) { } diff --git a/Userland/Libraries/LibPDF/Parser.h b/Userland/Libraries/LibPDF/Parser.h index 0af0e2041b..3d08ead5d7 100644 --- a/Userland/Libraries/LibPDF/Parser.h +++ b/Userland/Libraries/LibPDF/Parser.h @@ -25,9 +25,9 @@ public: Linearized, }; - static PDFErrorOr> parse_graphics_commands(ReadonlyBytes); + static PDFErrorOr> parse_graphics_commands(Document*, ReadonlyBytes); - Parser(Badge, ReadonlyBytes); + Parser(Document*, ReadonlyBytes); [[nodiscard]] ALWAYS_INLINE RefPtr const& trailer() const { return m_trailer; } void set_document(WeakPtr const&); diff --git a/Userland/Libraries/LibPDF/Renderer.cpp b/Userland/Libraries/LibPDF/Renderer.cpp index bf97906b48..f9f190f018 100644 --- a/Userland/Libraries/LibPDF/Renderer.cpp +++ b/Userland/Libraries/LibPDF/Renderer.cpp @@ -77,7 +77,7 @@ PDFErrorOr Renderer::render() byte_buffer.append(bytes.data(), bytes.size()); } - auto commands = TRY(Parser::parse_graphics_commands(byte_buffer)); + auto commands = TRY(Parser::parse_graphics_commands(m_document, byte_buffer)); for (auto& command : commands) TRY(handle_command(command));