From fcf707e20a7a7aef5ccd15e8fb8f62eb029f932b Mon Sep 17 00:00:00 2001 From: Colin Snover Date: Sat, 23 Sep 2017 21:39:13 -0500 Subject: SCI32: Flush stub RAMA save game to disk If this is not done and the file is buffered, it will not show up in the list of save games, and the new save will fail. --- engines/sci/engine/guest_additions.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/engines/sci/engine/guest_additions.cpp b/engines/sci/engine/guest_additions.cpp index eee26aca3c..06cf0c9f66 100644 --- a/engines/sci/engine/guest_additions.cpp +++ b/engines/sci/engine/guest_additions.cpp @@ -596,8 +596,13 @@ reg_t GuestAdditions::promptSaveRestoreRama(EngineState *s, int argc, reg_t *arg // We need to touch the save file just so it exists here, since // otherwise the game will not let us save to the new save slot // (it will try to come up with a brand new slot instead) - Common::ScopedPtr out(g_sci->getSaveFileManager()->openForSaving(g_sci->getSavegameName(saveNo))); - set_savegame_metadata(out.get(), saveGameName, ""); + Common::OutSaveFile *out = g_sci->getSaveFileManager()->openForSaving(g_sci->getSavegameName(saveNo)); + set_savegame_metadata(out, saveGameName, ""); + + // Make sure the save file is fully written before we try to + // re-retrieve the list of saves, since otherwise it may not + // show up in the list + delete out; // We have to re-retrieve saves and find the index instead of // assuming the newest save will be in index 0 because save game -- cgit v1.2.3