aboutsummaryrefslogtreecommitdiff
path: root/sword2
diff options
context:
space:
mode:
authorTorbjörn Andersson2004-06-10 06:14:07 +0000
committerTorbjörn Andersson2004-06-10 06:14:07 +0000
commitc63cc7c7d12826a5e3d5607ddef32e05f9e2a998 (patch)
treec080534b1d20bcc36a65c3b5429cccf88cc23ecb /sword2
parent0426d38aa599d554bd63c4053c6990356a62b71e (diff)
downloadscummvm-rg350-c63cc7c7d12826a5e3d5607ddef32e05f9e2a998.tar.gz
scummvm-rg350-c63cc7c7d12826a5e3d5607ddef32e05f9e2a998.tar.bz2
scummvm-rg350-c63cc7c7d12826a5e3d5607ddef32e05f9e2a998.zip
One of my not-so-recent cleanups caused BS2 to produce corrupt savegames.
And no one even noticed! Should be fixed now. svn-id: r13950
Diffstat (limited to 'sword2')
-rw-r--r--sword2/save_rest.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/sword2/save_rest.cpp b/sword2/save_rest.cpp
index 02453cc1a9..6c3feed16d 100644
--- a/sword2/save_rest.cpp
+++ b/sword2/save_rest.cpp
@@ -131,6 +131,9 @@ void Sword2Engine::fillSaveBuffer(byte *buffer, uint32 size, byte *desc) {
convertHeaderEndian(_saveGameHeader);
#endif
+ // Copy the header to the buffer, even though it isn't quite complete
+ memcpy(buffer, &_saveGameHeader, sizeof(_saveGameHeader));
+
// Get the global variables
byte *varsRes = _resman->openResource(1);
@@ -150,10 +153,9 @@ void Sword2Engine::fillSaveBuffer(byte *buffer, uint32 size, byte *desc) {
_saveGameHeader.checksum = TO_LE_32(calcChecksum(buffer + sizeof(_saveGameHeader.checksum), size - sizeof(_saveGameHeader.checksum)));
-
// All done
- memcpy(buffer, &_saveGameHeader, sizeof(_saveGameHeader));
+ memcpy(buffer, &_saveGameHeader.checksum, sizeof(_saveGameHeader.checksum));
}
uint32 Sword2Engine::saveData(uint16 slotNo, byte *buffer, uint32 bufferSize) {