diff options
author | Paul Gilbert | 2019-07-01 20:56:55 -0700 |
---|---|---|
committer | Paul Gilbert | 2019-07-06 15:27:09 -0700 |
commit | 5dea66231397c52afc7d2cdeae5989fd5edd0604 (patch) | |
tree | 6cd65d939d4051f0d0bade793f4598485547ad47 /engines/glk/alan3/save.cpp | |
parent | 18566feefcb9f4fa4d7395ffa6e6f2a6f0247d0e (diff) | |
download | scummvm-rg350-5dea66231397c52afc7d2cdeae5989fd5edd0604.tar.gz scummvm-rg350-5dea66231397c52afc7d2cdeae5989fd5edd0604.tar.bz2 scummvm-rg350-5dea66231397c52afc7d2cdeae5989fd5edd0604.zip |
GLK: ALAN3: Wrapping method calls in longjmp replacement macros
Diffstat (limited to 'engines/glk/alan3/save.cpp')
-rw-r--r-- | engines/glk/alan3/save.cpp | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/engines/glk/alan3/save.cpp b/engines/glk/alan3/save.cpp index 0d33ea6959..935d08f7bd 100644 --- a/engines/glk/alan3/save.cpp +++ b/engines/glk/alan3/save.cpp @@ -214,57 +214,62 @@ static void restoreCurrentValues(Common::SeekableReadStream *saveFile) { /*----------------------------------------------------------------------*/ -static void verifyGameId(Common::SeekableReadStream *saveFile) { +static void verifyGameId(CONTEXT, Common::SeekableReadStream *saveFile) { Aword savedUid = saveFile->readUint32LE(); if (!ignoreErrorOption && savedUid != header->uid) - error(M_SAVEVERS); + error(context, M_SAVEVERS); } /*----------------------------------------------------------------------*/ -static void verifyGameName(Common::SeekableReadStream *saveFile) { +static void verifyGameName(CONTEXT, Common::SeekableReadStream *saveFile) { char savedName[256]; int i = 0; while ((savedName[i++] = saveFile->readByte()) != '\0'); if (strcmp(savedName, adventureName) != 0) - error(M_SAVENAME); + error(context, M_SAVENAME); } /*----------------------------------------------------------------------*/ -static void verifyCompilerVersion(Common::SeekableReadStream *saveFile) { +static void verifyCompilerVersion(CONTEXT, Common::SeekableReadStream *saveFile) { char savedVersion[4]; saveFile->read(&savedVersion, 4); if (!ignoreErrorOption && memcmp(savedVersion, header->version, 4)) - error(M_SAVEVERS); + error(context, M_SAVEVERS); } /*----------------------------------------------------------------------*/ -static void verifySaveFile(Common::SeekableReadStream *saveFile) { +static void verifySaveFile(CONTEXT, Common::SeekableReadStream *saveFile) { char string[5]; saveFile->read(string, 4); string[4] = '\0'; if (strcmp(string, "ASAV") != 0) - error(M_NOTASAVEFILE); + error(context, M_NOTASAVEFILE); } /*----------------------------------------------------------------------*/ -void restoreGame(Common::SeekableReadStream *saveFile) { - verifySaveFile(saveFile); +bool restoreGame(Common::SeekableReadStream *saveFile) { + Context ctx; + verifySaveFile(ctx, saveFile); + if (ctx._break) return false; - /* Verify version of compiler/interpreter of saved game with us */ - verifyCompilerVersion(saveFile); + // Verify version of compiler/interpreter of saved game with us + verifyCompilerVersion(ctx, saveFile); + if (ctx._break) return false; - /* Verify name of game */ - verifyGameName(saveFile); + // Verify name of game + verifyGameName(ctx, saveFile); + if (ctx._break) return false; - /* Verify unique id of game */ - verifyGameId(saveFile); + // Verify unique id of game + verifyGameId(ctx, saveFile); + if (ctx._break) return false; restoreCurrentValues(saveFile); restoreAttributeArea(saveFile); @@ -273,6 +278,8 @@ void restoreGame(Common::SeekableReadStream *saveFile) { restoreScores(saveFile); restoreStrings(saveFile); restoreSets(saveFile); + + return true; } } // End of namespace Alan3 |