From c592b889bf58d61c69b9c64c96c0a6330e717016 Mon Sep 17 00:00:00 2001 From: Rodrigo Tobar Date: Sun, 15 Jan 2023 12:31:58 +0800 Subject: [PATCH] LibPDF: Add Reader::try_read for easier error propagation This will allow us to use TRY(reader.try_read) instead of having to verify the result of reader.remaining() before calling read.read(). --- Userland/Libraries/LibPDF/Reader.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Userland/Libraries/LibPDF/Reader.h b/Userland/Libraries/LibPDF/Reader.h index 112752e271..a27694b64e 100644 --- a/Userland/Libraries/LibPDF/Reader.h +++ b/Userland/Libraries/LibPDF/Reader.h @@ -12,6 +12,7 @@ #include #include #include +#include namespace PDF { @@ -59,6 +60,16 @@ public: return value; } + template + PDFErrorOr try_read() + { + if (sizeof(T) + m_offset >= m_bytes.size()) { + auto message = DeprecatedString::formatted("Cannot read {} bytes at offset {} of ReadonlyBytes of size {}", sizeof(T), m_offset, m_bytes.size()); + return Error { Error::Type::Parse, message }; + } + return read(); + } + char peek(size_t shift = 0) const { auto offset = m_offset + shift * (m_forwards ? 1 : -1);