[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