diff options
Diffstat (limited to 'engines/hopkins/saveload.cpp')
-rw-r--r-- | engines/hopkins/saveload.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index 05c7fb8119..35a80458ff 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -77,9 +77,8 @@ void SaveLoadManager::load(const Common::String &file, byte *buf) { delete savefile; } -bool SaveLoadManager::readSavegameHeader(Common::InSaveFile *in, hopkinsSavegameHeader &header) { +WARN_UNUSED_RESULT bool SaveLoadManager::readSavegameHeader(Common::InSaveFile *in, hopkinsSavegameHeader &header, bool skipThumbnail) { char saveIdentBuffer[SAVEGAME_STR_SIZE + 1]; - header._thumbnail = NULL; // Validate the header Id in->read(saveIdentBuffer, SAVEGAME_STR_SIZE + 1); @@ -96,9 +95,9 @@ bool SaveLoadManager::readSavegameHeader(Common::InSaveFile *in, hopkinsSavegame while ((ch = (char)in->readByte()) != '\0') header._saveName += ch; // Get the thumbnail - header._thumbnail = Graphics::loadThumbnail(*in); - if (!header._thumbnail) + if (!Graphics::loadThumbnail(*in, header._thumbnail, skipThumbnail)) { return false; + } // Read in save date/time header._year = in->readSint16LE(); @@ -186,10 +185,10 @@ Common::Error SaveLoadManager::loadGame(int slot) { // Read in the savegame header hopkinsSavegameHeader header; - readSavegameHeader(savefile, header); - if (header._thumbnail) - header._thumbnail->free(); - delete header._thumbnail; + if (!readSavegameHeader(savefile, header)) { + delete savefile; + return Common::kReadingFailed; + } // Read in the savegame data syncSavegameData(serializer, header._version); @@ -212,14 +211,14 @@ Common::Error SaveLoadManager::loadGame(int slot) { return Common::kNoError; } -bool SaveLoadManager::readSavegameHeader(int slot, hopkinsSavegameHeader &header) { +WARN_UNUSED_RESULT bool SaveLoadManager::readSavegameHeader(int slot, hopkinsSavegameHeader &header, bool skipThumbnail) { // Try and open the save file for reading Common::InSaveFile *savefile = g_system->getSavefileManager()->openForLoading( _vm->generateSaveName(slot)); if (!savefile) return false; - bool result = readSavegameHeader(savefile, header); + bool result = readSavegameHeader(savefile, header, skipThumbnail); delete savefile; return result; } |