Fix off-by-one error in savestates that could cause crashes (#977)
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-build / ios (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run

This commit is contained in:
PabloMK7 2025-04-24 19:04:59 +02:00 committed by GitHub
parent 939a6e0f7a
commit 493f59cef5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1619,6 +1619,9 @@ void GMainWindow::UpdateSaveStates() {
} }
} }
for (const auto& savestate : savestates) { for (const auto& savestate : savestates) {
if (savestate.slot >= Core::SaveStateSlotCount) {
continue;
}
const bool display_name = const bool display_name =
savestate.status == Core::SaveStateInfo::ValidationStatus::RevisionDismatch && savestate.status == Core::SaveStateInfo::ValidationStatus::RevisionDismatch &&
!savestate.build_name.empty(); !savestate.build_name.empty();
@ -1659,7 +1662,7 @@ void GMainWindow::UpdateSaveStates() {
for (u32 i = 1; i < Core::SaveStateSlotCount; ++i) { for (u32 i = 1; i < Core::SaveStateSlotCount; ++i) {
if (!actions_load_state[i]->isEnabled()) { if (!actions_load_state[i]->isEnabled()) {
// Prefer empty slot // Prefer empty slot
oldest_slot = i + 1; oldest_slot = i;
oldest_slot_time = 0; oldest_slot_time = 0;
break; break;
} }