diff options
Diffstat (limited to 'engines/sherlock/saveload.cpp')
-rw-r--r-- | engines/sherlock/saveload.cpp | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/engines/sherlock/saveload.cpp b/engines/sherlock/saveload.cpp index 9d203a6a27..ca27f57a97 100644 --- a/engines/sherlock/saveload.cpp +++ b/engines/sherlock/saveload.cpp @@ -103,13 +103,9 @@ SaveStateList SaveManager::getSavegameList(const Common::String &target) { Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(*file); if (in) { - if (!readSavegameHeader(in, header)) - continue; + if (readSavegameHeader(in, header)) + saveList.push_back(SaveStateDescriptor(slot, header._saveName)); - saveList.push_back(SaveStateDescriptor(slot, header._saveName)); - - header._thumbnail->free(); - delete header._thumbnail; delete in; } } @@ -119,9 +115,8 @@ SaveStateList SaveManager::getSavegameList(const Common::String &target) { return saveList; } -bool SaveManager::readSavegameHeader(Common::InSaveFile *in, SherlockSavegameHeader &header) { +WARN_UNUSED_RESULT bool SaveManager::readSavegameHeader(Common::InSaveFile *in, SherlockSavegameHeader &header, bool skipThumbnail) { char saveIdentBuffer[SAVEGAME_STR_SIZE + 1]; - header._thumbnail = nullptr; // Validate the header Id in->read(saveIdentBuffer, SAVEGAME_STR_SIZE + 1); @@ -138,9 +133,9 @@ bool SaveManager::readSavegameHeader(Common::InSaveFile *in, SherlockSavegameHea 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; + } // Read in save date/time header._year = in->readSint16LE(); @@ -212,11 +207,6 @@ void SaveManager::loadGame(int slot) { if (!readSavegameHeader(saveFile, header)) error("Invalid savegame"); - if (header._thumbnail) { - header._thumbnail->free(); - delete header._thumbnail; - } - // Synchronize the savegame data Serializer s(saveFile, nullptr); s.setVersion(header._version); |