From efd1aea969f9580493b41e52dc5f2b1e2d24646d Mon Sep 17 00:00:00 2001 From: Daniel Bertalan Date: Tue, 27 Jul 2021 09:42:57 +0200 Subject: [PATCH] AK: Make `InputMemoryStream::read_LEB128_*` templated On i686, reading integers larger than `2^32 - 1` would fail as the 32-bit `size_t` parameter would overflow. This caused us to read too few bytes in LibDebug's DWARF parser. Making this method templated solves this issue, as we now can call this API with a `u64` parameter. --- AK/MemoryStream.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/AK/MemoryStream.h b/AK/MemoryStream.h index 18ca769768..cd18d5dca4 100644 --- a/AK/MemoryStream.h +++ b/AK/MemoryStream.h @@ -74,9 +74,11 @@ public: return m_bytes[m_offset]; } - bool read_LEB128_unsigned(size_t& result) { return LEB128::read_unsigned(*this, result); } + template + bool read_LEB128_unsigned(ValueType& result) { return LEB128::read_unsigned(*this, result); } - bool read_LEB128_signed(ssize_t& result) { return LEB128::read_signed(*this, result); } + template + bool read_LEB128_signed(ValueType& result) { return LEB128::read_signed(*this, result); } ReadonlyBytes bytes() const { return m_bytes; } size_t offset() const { return m_offset; }