diff options
Diffstat (limited to 'engines/lab/savegame.cpp')
-rw-r--r-- | engines/lab/savegame.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/engines/lab/savegame.cpp b/engines/lab/savegame.cpp index 656595e3e5..46ef1486f0 100644 --- a/engines/lab/savegame.cpp +++ b/engines/lab/savegame.cpp @@ -76,7 +76,7 @@ void LabEngine::writeSaveGameHeader(Common::OutSaveFile *out, const Common::Stri out->writeUint32BE(playTime); } -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 @@ -98,7 +98,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(); @@ -174,7 +178,11 @@ bool LabEngine::loadGame(int slot) { return false; SaveGameHeader header; - readSaveGameHeader(file, header); + if (!readSaveGameHeader(file, header)) { + delete file; + return false; + } + _roomNum = file->readUint16LE(); _music->checkRoomMusic(1, _roomNum); _direction = file->readUint16LE(); |