From 0bc3333740f8a6db26fb7877922e83edbcfa0d40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Offenh=C3=A4user?= Date: Fri, 11 Nov 2022 12:07:11 +0100 Subject: [PATCH] LibPDF: Parse integer numbers with atoi() instead of strtof() strtof() produces rounding errors for very large numbers, which we don't want for integers, as they may have to be precise. --- Userland/Libraries/LibPDF/Parser.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibPDF/Parser.cpp b/Userland/Libraries/LibPDF/Parser.cpp index e888cbbf38..7c635ea6ac 100644 --- a/Userland/Libraries/LibPDF/Parser.cpp +++ b/Userland/Libraries/LibPDF/Parser.cpp @@ -194,12 +194,10 @@ PDFErrorOr Parser::parse_number() m_reader.consume_whitespace(); auto string = String(m_reader.bytes().slice(start_offset, m_reader.offset() - start_offset)); - float f = strtof(string.characters(), nullptr); if (is_float) - return Value(f); + return Value(strtof(string.characters(), nullptr)); - VERIFY(floorf(f) == f); - return Value(static_cast(f)); + return Value(atoi(string.characters())); } PDFErrorOr> Parser::parse_name()