diff --git a/src/core/achievements.cpp b/src/core/achievements.cpp index 61fbbdd5c..43b8ffc39 100644 --- a/src/core/achievements.cpp +++ b/src/core/achievements.cpp @@ -275,7 +275,7 @@ std::string Achievements::GetGameHash(CDImage* image) if (!System::ReadExecutableFromImage(image, &executable_name, &executable_data)) return {}; - BIOS::PSEXEHeader header; + BIOS::PSEXEHeader header = {}; if (executable_data.size() >= sizeof(header)) std::memcpy(&header, executable_data.data(), sizeof(header)); if (!BIOS::IsValidPSExeHeader(header, static_cast(executable_data.size()))) @@ -286,8 +286,8 @@ std::string Achievements::GetGameHash(CDImage* image) // See rcheevos hash.c - rc_hash_psx(). const u32 MAX_HASH_SIZE = 64 * 1024 * 1024; - const u32 hash_size = std::min(sizeof(header) + header.file_size, MAX_HASH_SIZE); - Assert(hash_size <= executable_data.size()); + const u32 hash_size = + std::min(std::min(sizeof(header) + header.file_size, MAX_HASH_SIZE), static_cast(executable_data.size())); MD5Digest digest; digest.Update(executable_name.c_str(), static_cast(executable_name.size()));