diff options
author | Colin Snover | 2017-09-23 21:39:13 -0500 |
---|---|---|
committer | Colin Snover | 2017-09-23 21:39:58 -0500 |
commit | fcf707e20a7a7aef5ccd15e8fb8f62eb029f932b (patch) | |
tree | 69daee75996beeca933828a0b861f0378bebde16 /engines/sci | |
parent | 7401e859faabecd094b90270ccda9ce10895b2fc (diff) | |
download | scummvm-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.
Diffstat (limited to 'engines/sci')
-rw-r--r-- | engines/sci/engine/guest_additions.cpp | 9 |
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 |