From 3c41487db76615c7c2e9abea3e4980e2b50031c0 Mon Sep 17 00:00:00 2001 From: AnotherTest Date: Mon, 7 Dec 2020 10:36:04 +0330 Subject: [PATCH] AK: Fix reading across chunks in DuplexMemoryStream --- AK/MemoryStream.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/AK/MemoryStream.h b/AK/MemoryStream.h index b6e318e1cf..d4cff6bfce 100644 --- a/AK/MemoryStream.h +++ b/AK/MemoryStream.h @@ -252,7 +252,7 @@ public: size_t nread = 0; while (bytes.size() - nread > 0 && m_write_offset - m_read_offset - nread > 0) { const auto chunk_index = (m_read_offset - m_base_offset + nread) / chunk_size; - const auto chunk_bytes = m_chunks[chunk_index].bytes().slice(m_read_offset % chunk_size).trim(m_write_offset - m_read_offset - nread); + const auto chunk_bytes = m_chunks[chunk_index].bytes().slice((m_read_offset + nread) % chunk_size).trim(m_write_offset - m_read_offset - nread); nread += chunk_bytes.copy_trimmed_to(bytes.slice(nread)); } @@ -279,8 +279,7 @@ public: return false; } - read(bytes); - return true; + return read(bytes) == bytes.size(); } size_t write(ReadonlyBytes bytes) override