diff options
Diffstat (limited to 'engines/gnap')
-rw-r--r-- | engines/gnap/detection.cpp | 15 | ||||
-rw-r--r-- | engines/gnap/gnap.h | 2 | ||||
-rw-r--r-- | engines/gnap/menu.cpp | 7 |
3 files changed, 11 insertions, 13 deletions
diff --git a/engines/gnap/detection.cpp b/engines/gnap/detection.cpp index d19d420ff8..97c9128002 100644 --- a/engines/gnap/detection.cpp +++ b/engines/gnap/detection.cpp @@ -141,13 +141,8 @@ SaveStateList GnapMetaEngine::listSaves(const char *target) const { Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(*file); if (in) { - Gnap::GnapEngine::readSavegameHeader(in, header); - saveList.push_back(SaveStateDescriptor(slot, header._saveName)); - - if (header._thumbnail) { - header._thumbnail->free(); - delete header._thumbnail; - } + if (Gnap::GnapEngine::readSavegameHeader(in, header)) + saveList.push_back(SaveStateDescriptor(slot, header._saveName)); delete in; } } @@ -179,7 +174,11 @@ SaveStateDescriptor GnapMetaEngine::querySaveMetaInfos(const char *target, int s SaveStateDescriptor desc(slot, saveName); if (version != 1) { - Graphics::Surface *const thumbnail = Graphics::loadThumbnail(*file); + Graphics::Surface *thumbnail; + if (!Graphics::loadThumbnail(*file, thumbnail)) { + delete file; + return SaveStateDescriptor(); + } desc.setThumbnail(thumbnail); } diff --git a/engines/gnap/gnap.h b/engines/gnap/gnap.h index dbefa31795..dd653304e7 100644 --- a/engines/gnap/gnap.h +++ b/engines/gnap/gnap.h @@ -319,7 +319,7 @@ public: Common::String generateSaveName(int slot); void synchronize(Common::Serializer &s); void writeSavegameHeader(Common::OutSaveFile *out, GnapSavegameHeader &header); - static bool readSavegameHeader(Common::InSaveFile *in, GnapSavegameHeader &header); + WARN_UNUSED_RESULT static bool readSavegameHeader(Common::InSaveFile *in, GnapSavegameHeader &header, bool skipThumbnail = true); void delayTicks(int val, int idx, bool updateCursor); void delayTicksA(int val, int idx); diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp index 9606273b4c..34b5f18473 100644 --- a/engines/gnap/menu.cpp +++ b/engines/gnap/menu.cpp @@ -589,9 +589,8 @@ void GnapEngine::writeSavegameHeader(Common::OutSaveFile *out, GnapSavegameHeade out->writeSint16LE(td.tm_min); } -bool GnapEngine::readSavegameHeader(Common::InSaveFile *in, GnapSavegameHeader &header) { +WARN_UNUSED_RESULT bool GnapEngine::readSavegameHeader(Common::InSaveFile *in, GnapSavegameHeader &header, bool skipThumbnail) { char saveIdentBuffer[SAVEGAME_STR_SIZE + 1]; - header._thumbnail = nullptr; // Validate the header Id in->read(saveIdentBuffer, SAVEGAME_STR_SIZE + 1); @@ -612,9 +611,9 @@ bool GnapEngine::readSavegameHeader(Common::InSaveFile *in, GnapSavegameHeader & if (header._version == 1) header._thumbnail = nullptr; else { - header._thumbnail = Graphics::loadThumbnail(*in); - if (!header._thumbnail) + if (!Graphics::loadThumbnail(*in, header._thumbnail, skipThumbnail)) { return false; + } } // Read in save date/time |