aboutsummaryrefslogtreecommitdiff
path: root/sword1/control.cpp
diff options
context:
space:
mode:
authorRobert Göffringmann2005-10-26 06:30:28 +0000
committerRobert Göffringmann2005-10-26 06:30:28 +0000
commitccd7557a87ff63a4dca00c589f24cb9f4baf100c (patch)
tree085e41c7a560ee201c930242631b0c68fb9a0cc5 /sword1/control.cpp
parent722e9a7986ee7d02f6b6ccc0fce588a4d1150d12 (diff)
downloadscummvm-rg350-ccd7557a87ff63a4dca00c589f24cb9f4baf100c.tar.gz
scummvm-rg350-ccd7557a87ff63a4dca00c589f24cb9f4baf100c.tar.bz2
scummvm-rg350-ccd7557a87ff63a4dca00c589f24cb9f4baf100c.zip
added call to OutSaveFile::flush() and some more I/O error checks
svn-id: r19302
Diffstat (limited to 'sword1/control.cpp')
-rw-r--r--sword1/control.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/sword1/control.cpp b/sword1/control.cpp
index b7afc1ada6..8613e387bf 100644
--- a/sword1/control.cpp
+++ b/sword1/control.cpp
@@ -750,7 +750,7 @@ void Control::writeSavegameDescriptions(void) {
if (!outf) {
// Display an error message, and do nothing
- displayMessage(0, "Unable to write to path '%s'", _saveFileMan->getSavePath());
+ displayMessage(0, "Can't create SAVEGAME.INF in directory '%s'", _saveFileMan->getSavePath());
return;
}
@@ -765,6 +765,9 @@ void Control::writeSavegameDescriptions(void) {
else
outf->writeByte(255);
}
+ outf->flush();
+ if (outf->ioFailed())
+ displayMessage(0, "Can't write to SAVEGAME.INF in directory '%s'. Device full?", _saveFileMan->getSavePath());
delete outf;
}
@@ -934,7 +937,7 @@ void Control::saveGameToFile(uint8 slot) {
Common::OutSaveFile *outf;
outf = _saveFileMan->openForSaving(fName);
if (!outf) {
- // Display an error message, and do nothing
+ // Display an error message and do nothing
displayMessage(0, "Unable to create file '%s' in directory '%s'", fName, _saveFileMan->getSavePath());
return;
}
@@ -957,6 +960,9 @@ void Control::saveGameToFile(uint8 slot) {
uint32 *playerRaw = (uint32*)cpt;
for (uint32 cnt2 = 0; cnt2 < playerSize; cnt2++)
outf->writeUint32LE(playerRaw[cnt2]);
+ outf->flush();
+ if (outf->ioFailed())
+ displayMessage(0, "Couldn't write to file '%s' in directory '%s'. Device full?", fName, _saveFileMan->getSavePath());
delete outf;
}
@@ -991,6 +997,13 @@ bool Control::restoreGameFromFile(uint8 slot) {
for (uint32 cnt2 = 0; cnt2 < playerSize; cnt2++)
playerBuf[cnt2] = inf->readUint32LE();
+ if (inf->ioFailed()) {
+ displayMessage(0, "Can't read from file '%s' in directory '%s'", fName, _saveFileMan->getSavePath());
+ delete inf;
+ free(_restoreBuf);
+ _restoreBuf = NULL;
+ return false;
+ }
delete inf;
return true;
}