aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorLars Skovlund2010-11-08 11:02:43 +0000
committerLars Skovlund2010-11-08 11:02:43 +0000
commit416025cda90f23ea5b94c88dcea0c202df279223 (patch)
tree5d1be4391f595b173ba38e27fa483e0406fb4289 /engines
parentf0fe060cc3a17f6bcb5e9253fbce0605a88cc0c2 (diff)
downloadscummvm-rg350-416025cda90f23ea5b94c88dcea0c202df279223.tar.gz
scummvm-rg350-416025cda90f23ea5b94c88dcea0c202df279223.tar.bz2
scummvm-rg350-416025cda90f23ea5b94c88dcea0c202df279223.zip
Fix assertion failure in SCI0 saving code
svn-id: r54138
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/engine/savegame.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp
index 072c4db57b..3ced5a4f9d 100644
--- a/engines/sci/engine/savegame.cpp
+++ b/engines/sci/engine/savegame.cpp
@@ -411,15 +411,19 @@ void Script::syncStringHeap(Common::Serializer &s) {
do {
int blockType = READ_LE_UINT16(buf);
- int blockSize = READ_LE_UINT16(buf + 2);
- assert(blockSize > 0);
-
+ int blockSize;
if (blockType == 0)
break;
+
+ blockSize = READ_LE_UINT16(buf + 2);
+ assert(blockSize > 0);
+
+
if (blockType == SCI_OBJ_STRINGS)
s.syncBytes(buf, blockSize);
buf += blockSize;
+
if (_buf - buf == 0)
break;
} while (1);