From dfcf0c042cf847d1d187e64ea4cc7d7cf77eda06 Mon Sep 17 00:00:00 2001 From: Jamiras Date: Tue, 11 Jun 2024 18:08:35 -0600 Subject: [PATCH] fix rewind not working when RetroAchievements cannot identify game --- deps/rcheevos/src/rc_client.c | 2 +- tasks/task_save.c | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/deps/rcheevos/src/rc_client.c b/deps/rcheevos/src/rc_client.c index 9aeb289348..a6a61eb7bf 100644 --- a/deps/rcheevos/src/rc_client.c +++ b/deps/rcheevos/src/rc_client.c @@ -5384,7 +5384,7 @@ size_t rc_client_progress_size(rc_client_t* client) return client->state.external_client->progress_size(); #endif - if (!client->game) + if (!rc_client_is_game_loaded(client)) return 0; rc_mutex_lock(&client->state.mutex); diff --git a/tasks/task_save.c b/tasks/task_save.c index c21be14fcf..464cd3e3ad 100644 --- a/tasks/task_save.c +++ b/tasks/task_save.c @@ -448,8 +448,20 @@ bool content_serialize_state_rewind(void* buffer, size_t buffer_size) { rastate_size_info_t size; size_t len = content_get_rastate_size(&size, true); - if (len == 0 || len > buffer_size) + if (len == 0) return false; + if (len > buffer_size) + { +#ifdef DEBUG + static size_t last_reported_len = 0; + if (len != last_reported_len) + { + last_reported_len = len; + RARCH_WARN("Rewind state size exceeds frame size (%zu > %zu).\n", len, buffer_size); + } +#endif + return false; + } return content_write_serialized_state(buffer, &size, true); }