aboutsummaryrefslogtreecommitdiff
path: root/engines/lab/savegame.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lab/savegame.cpp')
-rw-r--r--engines/lab/savegame.cpp14
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();