aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorbjörn Andersson2005-11-05 14:24:13 +0000
committerTorbjörn Andersson2005-11-05 14:24:13 +0000
commitffbbafed15b1625a94eb09680873ae8f7a636989 (patch)
tree84bd808e4316fc026dfdb6387a7712ba2f119873
parentb8aaa2ed04d00e7937111735aaa845864f6aee98 (diff)
downloadscummvm-rg350-ffbbafed15b1625a94eb09680873ae8f7a636989.tar.gz
scummvm-rg350-ffbbafed15b1625a94eb09680873ae8f7a636989.tar.bz2
scummvm-rg350-ffbbafed15b1625a94eb09680873ae8f7a636989.zip
Call flush() in the savegame stream, when saving. I think SAGA, Simon and
BS2 were the last engines that didn't. But I could be mistaken. svn-id: r19463
-rw-r--r--saga/saveload.cpp4
-rw-r--r--simon/saveload.cpp8
-rw-r--r--sword2/save_rest.cpp10
3 files changed, 15 insertions, 7 deletions
diff --git a/saga/saveload.cpp b/saga/saveload.cpp
index 4ded01925a..7e68bb4eef 100644
--- a/saga/saveload.cpp
+++ b/saga/saveload.cpp
@@ -202,6 +202,10 @@ void SagaEngine::save(const char *fileName, const char *saveName) {
out->writeSint16LE(_isoMap->getMapPosition().x);
out->writeSint16LE(_isoMap->getMapPosition().y);
+ out->flush();
+
+ // TODO: Check out->ioFailed()
+
delete out;
}
diff --git a/simon/saveload.cpp b/simon/saveload.cpp
index 75f7c7b5bb..cee09f15a9 100644
--- a/simon/saveload.cpp
+++ b/simon/saveload.cpp
@@ -459,7 +459,7 @@ bool SimonEngine::save_game(uint slot, char *caption) {
}
}
- Child9 *child9 = (Child9 *) findChildOfType(item, 9);
+ Child9 *child9 = (Child9 *)findChildOfType(item, 9);
if (child9) {
for (i = 0; i != 4; i++) {
f->writeUint16BE(child9->array[i]);
@@ -487,11 +487,13 @@ bool SimonEngine::save_game(uint slot, char *caption) {
f->writeUint16BE(_bitArray[i]);
}
- delete f;
+ f->flush();
+ bool result = !f->ioFailed();
+ delete f;
_lockWord &= ~0x100;
- return true;
+ return result;
}
char *SimonEngine::gen_savename(int slot) {
diff --git a/sword2/save_rest.cpp b/sword2/save_rest.cpp
index cf948b7c14..06e8eb24de 100644
--- a/sword2/save_rest.cpp
+++ b/sword2/save_rest.cpp
@@ -125,13 +125,15 @@ uint32 Sword2Engine::saveData(uint16 slotNo, byte *buffer, uint32 bufferSize) {
return SR_ERR_FILEOPEN;
}
- uint32 itemsWritten = out->write(buffer, bufferSize);
+ out->write(buffer, bufferSize);
+ out->flush();
- delete out;
-
- if (itemsWritten == bufferSize)
+ if (!out->ioFailed()) {
+ delete out;
return SR_OK;
+ }
+ delete out;
return SR_ERR_WRITEFAIL;
}