diff options
Diffstat (limited to 'engines/sci/engine/kfile.cpp')
-rw-r--r-- | engines/sci/engine/kfile.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp index 1b5b94589a..21674cc94f 100644 --- a/engines/sci/engine/kfile.cpp +++ b/engines/sci/engine/kfile.cpp @@ -583,15 +583,19 @@ reg_t kSaveGame(EngineState *s, int argc, reg_t *argv) { } reg_t kRestoreGame(EngineState *s, int argc, reg_t *argv) { - Common::String game_id = s->_segMan->getString(argv[0]); + Common::String game_id = !argv[0].isNull() ? s->_segMan->getString(argv[0]) : ""; int savedir_nr = argv[1].toUint16(); debug(3, "kRestoreGame(%s,%d)", game_id.c_str(), savedir_nr); - Common::Array<SavegameDesc> saves; - listSavegames(saves); + if (!argv[0].isNull()) { + Common::Array<SavegameDesc> saves; + listSavegames(saves); - savedir_nr = saves[savedir_nr].id; + savedir_nr = saves[savedir_nr].id; + } else { + // Loading from GMM, no change necessary + } if (savedir_nr > -1) { Common::SaveFileManager *saveFileMan = g_engine->getSaveFileManager(); |