From 73bb1e548b5120d178f7ecb581664aab46ebf49d Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Mon, 28 Jun 2021 22:41:06 +0100 Subject: [PATCH] ENGINES: Ensure there is no recursive call to auto-save --- engines/engine.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/engines/engine.cpp b/engines/engine.cpp index 06991c1c252..f62001f133d 100644 --- a/engines/engine.cpp +++ b/engines/engine.cpp @@ -530,6 +530,11 @@ void Engine::handleAutoSave() { } void Engine::saveAutosaveIfEnabled() { + // Reset the last autosave time first. + // Doing it here rather than after saving the game prevents recursive calls if saving the game + // causes the engine to poll events (as is the case with the AGS engine for example). + _lastAutosaveTime = _system->getMillis(); + if (_autosaveInterval != 0) { bool saveFlag = canSaveAutosaveCurrently(); @@ -549,13 +554,9 @@ void Engine::saveAutosaveIfEnabled() { if (!saveFlag) { // Set the next autosave interval to be in 5 minutes, rather than whatever // full autosave interval the user has selected - _lastAutosaveTime = _system->getMillis() + (5 * 60 * 1000) - _autosaveInterval; - return; + _lastAutosaveTime += (5 * 60 * 1000) - _autosaveInterval; } } - - // Reset the last autosave time - _lastAutosaveTime = _system->getMillis(); } void Engine::errorString(const char *buf1, char *buf2, int size) {