[Scummvm-cvs-logs] SF.net SVN: scummvm:[54153] scummvm/trunk/engines/sci/engine
thebluegr at users.sourceforge.net
thebluegr at users.sourceforge.net
Tue Nov 9 12:57:55 CET 2010
Revision: 54153
http://scummvm.svn.sourceforge.net/scummvm/?rev=54153&view=rev
Author: thebluegr
Date: 2010-11-09 11:57:54 +0000 (Tue, 09 Nov 2010)
Log Message:
-----------
SCI: Added comments for rev. 54150 and fixed a typo
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/savegame.cpp
scummvm/trunk/engines/sci/engine/vm.cpp
Modified: scummvm/trunk/engines/sci/engine/savegame.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.cpp 2010-11-09 11:02:06 UTC (rev 54152)
+++ scummvm/trunk/engines/sci/engine/savegame.cpp 2010-11-09 11:57:54 UTC (rev 54153)
@@ -402,7 +402,7 @@
void Script::syncStringHeap(Common::Serializer &s) {
if (getSciVersion() < SCI_VERSION_1_1) {
- // Sync all if the SCI_OBJ_STRINGS blocks
+ // Sync all of the SCI_OBJ_STRINGS blocks
byte *buf = _buf;
bool oldScriptHeader = (getSciVersion() == SCI_VERSION_0_EARLY);
@@ -418,7 +418,6 @@
blockSize = READ_LE_UINT16(buf + 2);
assert(blockSize > 0);
-
if (blockType == SCI_OBJ_STRINGS)
s.syncBytes(buf, blockSize);
Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp 2010-11-09 11:02:06 UTC (rev 54152)
+++ scummvm/trunk/engines/sci/engine/vm.cpp 2010-11-09 11:57:54 UTC (rev 54153)
@@ -1774,6 +1774,12 @@
break;
case op_pushSelf: // 0x3e (62)
+ // Compensate for a bug in non-Sierra compilers, which seem to generate
+ // pushSelf instructions with the low bit set. This makes the following
+ // heuristic fail and leads to endless loops and crashes. Our
+ // interpretation of this seems correct, as other SCI tools, like for
+ // example SCI Viewer, have issues with these scripts (e.g. script 999
+ // in Circus Quest). Fixes bug #3038686.
if (!(extOpcode & 1) || g_sci->getGameId() == GID_FANMADE) {
PUSH32(s->xs->objp);
} else {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list