From 1fbfbb57daf241663a4c0e8a3155a18c225c2bc7 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Thu, 6 Aug 2026 20:25:29 +1000 Subject: [PATCH] System: Fix implicit 32-bit truncation of screenshot size --- src/core/system.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index 6c16c78a9..cf8adc479 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -200,7 +200,7 @@ static bool LoadOneRewindState(); static bool LoadStateFromBuffer(const SaveStateBuffer& buffer, Error* error, bool update_display); static bool LoadStateBufferFromFile(SaveStateBuffer* buffer, std::FILE* fp, Error* error, bool read_title, bool read_media_path, bool read_screenshot, bool read_data); -static bool ReadAndDecompressStateData(std::FILE* fp, std::span dst, u32 file_offset, u32 compressed_size, +static bool ReadAndDecompressStateData(std::FILE* fp, std::span dst, u32 file_offset, size_t compressed_size, SAVE_STATE_HEADER::CompressionType method, Error* error); static bool SaveStateToBuffer(SaveStateBuffer* buffer, Error* error, u32 screenshot_size = 256); static bool SaveStateBufferToFile(const SaveStateBuffer& buffer, std::FILE* fp, Error* error, @@ -2999,7 +2999,7 @@ bool System::LoadStateBufferFromFile(SaveStateBuffer* buffer, std::FILE* fp, Err if (read_screenshot) { buffer->screenshot.Resize(header.screenshot_width, header.screenshot_height, ImageFormat::RGBA8, true); - const u32 compressed_size = + const size_t compressed_size = (header.version >= 69) ? header.screenshot_compressed_size : buffer->screenshot.GetStorageSize(); const SAVE_STATE_HEADER::CompressionType compression_type = (header.version >= 69) ? static_cast(header.screenshot_compression_type) : @@ -3029,7 +3029,7 @@ bool System::LoadStateBufferFromFile(SaveStateBuffer* buffer, std::FILE* fp, Err return true; } -bool System::ReadAndDecompressStateData(std::FILE* fp, std::span dst, u32 file_offset, u32 compressed_size, +bool System::ReadAndDecompressStateData(std::FILE* fp, std::span dst, u32 file_offset, size_t compressed_size, SAVE_STATE_HEADER::CompressionType method, Error* error) { if (!FileSystem::FSeek64(fp, file_offset, SEEK_SET, error))