diff options
Diffstat (limited to 'engines/zvision/file/save_manager.cpp')
-rw-r--r-- | engines/zvision/file/save_manager.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/engines/zvision/file/save_manager.cpp b/engines/zvision/file/save_manager.cpp index 4259937a3b..4676272146 100644 --- a/engines/zvision/file/save_manager.cpp +++ b/engines/zvision/file/save_manager.cpp @@ -162,8 +162,6 @@ Common::Error SaveManager::loadGame(int slot) { scriptManager->deserialize(saveFile); delete saveFile; - if (header.thumbnail) - delete header.thumbnail; if (_engine->getGameId() == GID_NEMESIS && scriptManager->getCurrentLocation() == "tv2f") { // WORKAROUND for script bug #6793: location tv2f (stairs) has two states: @@ -189,17 +187,20 @@ Common::Error SaveManager::loadGame(int slot) { return Common::kNoError; } -bool SaveManager::readSaveGameHeader(Common::InSaveFile *in, SaveGameHeader &header) { +bool SaveManager::readSaveGameHeader(Common::InSaveFile *in, SaveGameHeader &header, bool skipThumbnail) { + header.saveYear = 0; + header.saveMonth = 0; + header.saveDay = 0; + header.saveHour = 0; + header.saveMinutes = 0; + header.saveName.clear(); + header.thumbnail = nullptr; + header.version = 0; + uint32 tag = in->readUint32BE(); // Check if it's original savegame than fill header structure if (tag == MKTAG('Z', 'N', 'S', 'G')) { - header.saveYear = 0; - header.saveMonth = 0; - header.saveDay = 0; - header.saveHour = 0; - header.saveMinutes = 0; header.saveName = "Original Save"; - header.thumbnail = NULL; header.version = SAVE_ORIGINAL; in->seek(-4, SEEK_CUR); return true; @@ -226,15 +227,14 @@ bool SaveManager::readSaveGameHeader(Common::InSaveFile *in, SaveGameHeader &hea } // Read in the save name - header.saveName.clear(); char ch; 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.saveYear = in->readSint16LE(); |