From 0416f6361c86b1db894133927c8057cdf1ab68e3 Mon Sep 17 00:00:00 2001 From: Eladash <18193363+elad335@users.noreply.github.com> Date: Tue, 28 Nov 2023 13:04:03 +0200 Subject: [PATCH] Fix file_view::read_at and file_view::get_stat --- rpcs3/Emu/Cell/PPUThread.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 67085ea103..259c5fa11d 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -3541,7 +3541,10 @@ namespace fs::stat_t get_stat() override { - return m_file.get_stat(); + fs::stat_t stat = m_file.get_stat(); + stat.size = std::min(utils::sub_saturate(stat.size, m_off), m_max_size); + stat.is_writable = false; + return stat; } bool trunc(u64) override @@ -3558,7 +3561,7 @@ namespace u64 read_at(u64 offset, void* buffer, u64 size) override { - return m_file.read_at(offset + m_off, buffer, std::min(size, utils::sub_saturate(m_max_size, m_pos))); + return m_file.read_at(offset + m_off, buffer, std::min(size, utils::sub_saturate(m_max_size, offset))); } u64 write(const void*, u64) override @@ -3585,7 +3588,7 @@ namespace u64 size() override { - return m_file.size(); + return std::min(utils::sub_saturate(m_file.size(), m_off), m_max_size); } }; }