diff options
Diffstat (limited to 'engines/dm')
-rw-r--r-- | engines/dm/dm.h | 2 | ||||
-rw-r--r-- | engines/dm/loadsave.cpp | 13 |
2 files changed, 11 insertions, 4 deletions
diff --git a/engines/dm/dm.h b/engines/dm/dm.h index 16307778ba..e330cb6be7 100644 --- a/engines/dm/dm.h +++ b/engines/dm/dm.h @@ -332,7 +332,7 @@ public: Thing _thingParty; // @ C0xFFFF_THING_PARTY }; -bool readSaveGameHeader(Common::InSaveFile *in, SaveGameHeader *header); +WARN_UNUSED_RESULT bool readSaveGameHeader(Common::InSaveFile *in, SaveGameHeader *header, bool skipThumbnail = true); } // End of namespace DM diff --git a/engines/dm/loadsave.cpp b/engines/dm/loadsave.cpp index 3d8f76c33f..864a726367 100644 --- a/engines/dm/loadsave.cpp +++ b/engines/dm/loadsave.cpp @@ -70,7 +70,10 @@ LoadgameResult DMEngine::loadgame(int16 slot) { file = saveFileManager->openForLoading(fileName); SaveGameHeader header; - readSaveGameHeader(file, &header); + if (!readSaveGameHeader(file, &header)) { + delete file; + return kDMLoadgameFailure; + } warning("MISSING CODE: missing check for matching format and platform in save in f435_loadgame"); @@ -397,7 +400,7 @@ bool DMEngine::writeCompleteSaveFile(int16 saveSlot, Common::String& saveDescrip return true; } -bool readSaveGameHeader(Common::InSaveFile *in, SaveGameHeader *header) { +WARN_UNUSED_RESULT bool readSaveGameHeader(Common::InSaveFile *in, SaveGameHeader *header, bool skipThumbnail) { uint32 id = in->readUint32BE(); // Check if it's a valid ScummVM savegame @@ -419,7 +422,11 @@ bool readSaveGameHeader(Common::InSaveFile *in, SaveGameHeader *header) { header->_descr.setDescription(saveName); // Get the thumbnail - header->_descr.setThumbnail(Graphics::loadThumbnail(*in)); + Graphics::Surface *thumbnail; + if (!Graphics::loadThumbnail(*in, thumbnail, skipThumbnail)) { + return false; + } + header->_descr.setThumbnail(thumbnail); uint32 saveDate = in->readUint32BE(); uint16 saveTime = in->readUint16BE(); |