From ca267da97c14268f8c650d7dac727182062129d0 Mon Sep 17 00:00:00 2001 From: Bendegúz Nagy Date: Sat, 20 Aug 2016 13:25:29 +0200 Subject: DM: Add file error checking for save game --- engines/dm/loadsave.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'engines/dm/loadsave.cpp') diff --git a/engines/dm/loadsave.cpp b/engines/dm/loadsave.cpp index 02f1a8088e..a84a0b6624 100644 --- a/engines/dm/loadsave.cpp +++ b/engines/dm/loadsave.cpp @@ -240,7 +240,10 @@ void DMEngine::f433_processCommand140_saveGame() { _championMan->_gK71_champions[_championMan->_g411_leaderIndex]._load -= champHandObjWeight; } - writeCompleteSaveFile(saveSlot, saveDescription, saveAndPlayChoice); + if (!writeCompleteSaveFile(saveSlot, saveDescription, saveAndPlayChoice)) { + _dialog->f427_dialogDraw(nullptr, "Unable to open file for saving", "OK", nullptr, nullptr, nullptr, false, false, false); + _dialog->f424_dialogGetChoice(1, k0_DIALOG_SET_VIEWPORT, 0, k0_DIALOG_CHOICE_NONE); + } if (!_championMan->_g415_leaderEmptyHanded) { _championMan->_gK71_champions[_championMan->_g411_leaderIndex]._load += champHandObjWeight; @@ -296,13 +299,14 @@ void DMEngine::writeSaveGameHeader(Common::OutSaveFile* out, const Common::Strin out->writeUint32BE(playTime); } -void DMEngine::writeCompleteSaveFile(int16 saveSlot, Common::String& saveDescription, int16 saveAndPlayChoice) { +bool DMEngine::writeCompleteSaveFile(int16 saveSlot, Common::String& saveDescription, int16 saveAndPlayChoice) { Common::String savefileName = getSavefileName(saveSlot); Common::SaveFileManager *saveFileManager = _system->getSavefileManager(); Common::OutSaveFile *file = saveFileManager->openForSaving(savefileName); - if (!file) - return; // TODO: silent fail + if (!file) { + return false; + } writeSaveGameHeader(file, saveDescription); @@ -409,6 +413,8 @@ void DMEngine::writeCompleteSaveFile(int16 saveSlot, Common::String& saveDescrip file->flush(); file->finalize(); delete file; + + return true; } bool readSaveGameHeader(Common::InSaveFile* in, SaveGameHeader* header) { -- cgit v1.2.3