aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Snover2017-09-23 21:39:13 -0500
committerColin Snover2017-09-23 21:39:58 -0500
commitfcf707e20a7a7aef5ccd15e8fb8f62eb029f932b (patch)
tree69daee75996beeca933828a0b861f0378bebde16
parent7401e859faabecd094b90270ccda9ce10895b2fc (diff)
downloadscummvm-rg350-fcf707e20a7a7aef5ccd15e8fb8f62eb029f932b.tar.gz
scummvm-rg350-fcf707e20a7a7aef5ccd15e8fb8f62eb029f932b.tar.bz2
scummvm-rg350-fcf707e20a7a7aef5ccd15e8fb8f62eb029f932b.zip
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.
-rw-r--r--engines/sci/engine/guest_additions.cpp9
1 files 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<Common::OutSaveFile> 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