aboutsummaryrefslogtreecommitdiff
path: root/engines/cruise/saveload.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cruise/saveload.cpp')
-rw-r--r--engines/cruise/saveload.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/engines/cruise/saveload.cpp b/engines/cruise/saveload.cpp
index a62648df08..7aaeb06905 100644
--- a/engines/cruise/saveload.cpp
+++ b/engines/cruise/saveload.cpp
@@ -43,9 +43,8 @@ struct overlayRestoreTemporary {
overlayRestoreTemporary ovlRestoreData[90];
-bool readSavegameHeader(Common::InSaveFile *in, CruiseSavegameHeader &header) {
+WARN_UNUSED_RESULT bool readSavegameHeader(Common::InSaveFile *in, CruiseSavegameHeader &header, bool skipThumbnail) {
char saveIdentBuffer[6];
- header.thumbnail = NULL;
// Validate the header Id
in->read(saveIdentBuffer, 6);
@@ -62,9 +61,9 @@ bool readSavegameHeader(Common::InSaveFile *in, CruiseSavegameHeader &header) {
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;
+ }
return true;
}
@@ -827,8 +826,10 @@ Common::Error loadSavegameData(int saveGameIdx) {
// Skip over the savegame header
CruiseSavegameHeader header;
- readSavegameHeader(f, header);
- delete header.thumbnail;
+ if (!readSavegameHeader(f, header)) {
+ delete f;
+ return Common::kReadingFailed;
+ }
// Synchronise the remaining data of the savegame
Common::Serializer s(f, NULL);