summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/AchievementManager.cpp30
1 files changed, 18 insertions, 12 deletions
diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp
index 7a1837abbc..8b13a5327a 100644
--- a/Source/Core/Core/AchievementManager.cpp
+++ b/Source/Core/Core/AchievementManager.cpp
@@ -372,26 +372,32 @@ void AchievementManager::FilterApprovedPatches(std::vector<PatchEngine::Patch>&
if (!IsHardcoreModeActive())
return;
- if (!m_ini_root->contains(game_ini_id))
- patches.clear();
+ const bool known_id = m_ini_root->contains(game_ini_id);
+
auto patch_itr = patches.begin();
while (patch_itr != patches.end())
{
INFO_LOG_FMT(ACHIEVEMENTS, "Verifying patch {}", patch_itr->name);
- auto context = Common::SHA1::CreateContext();
- context->Update(Common::BitCastToArray<u8>(static_cast<u64>(patch_itr->entries.size())));
- for (const auto& entry : patch_itr->entries)
+ bool verified = false;
+
+ if (known_id)
{
- context->Update(Common::BitCastToArray<u8>(entry.type));
- context->Update(Common::BitCastToArray<u8>(entry.address));
- context->Update(Common::BitCastToArray<u8>(entry.value));
- context->Update(Common::BitCastToArray<u8>(entry.comparand));
- context->Update(Common::BitCastToArray<u8>(entry.conditional));
+ auto context = Common::SHA1::CreateContext();
+ context->Update(Common::BitCastToArray<u8>(static_cast<u64>(patch_itr->entries.size())));
+ for (const auto& entry : patch_itr->entries)
+ {
+ context->Update(Common::BitCastToArray<u8>(entry.type));
+ context->Update(Common::BitCastToArray<u8>(entry.address));
+ context->Update(Common::BitCastToArray<u8>(entry.value));
+ context->Update(Common::BitCastToArray<u8>(entry.comparand));
+ context->Update(Common::BitCastToArray<u8>(entry.conditional));
+ }
+ auto digest = context->Finish();
+
+ verified = m_ini_root->get(game_ini_id).contains(Common::SHA1::DigestToString(digest));
}
- auto digest = context->Finish();
- bool verified = m_ini_root->get(game_ini_id).contains(Common::SHA1::DigestToString(digest));
if (!verified)
{
patch_itr = patches.erase(patch_itr);