[Scummvm-cvs-logs] SF.net SVN: scummvm:[51062] scummvm/trunk/engines/sci/engine/vm.cpp

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Tue Jul 20 14:50:14 CEST 2010


Revision: 51062
          http://scummvm.svn.sourceforge.net/scummvm/?rev=51062&view=rev
Author:   m_kiewitz
Date:     2010-07-20 12:50:13 +0000 (Tue, 20 Jul 2010)

Log Message:
-----------
SCI: fix regression of r51060

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/vm.cpp

Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp	2010-07-20 11:47:47 UTC (rev 51061)
+++ scummvm/trunk/engines/sci/engine/vm.cpp	2010-07-20 12:50:13 UTC (rev 51062)
@@ -928,10 +928,17 @@
 				error("[VM] k%s: signature mismatch via method %s::%s (script %d, localCall %x)", kernelSubCall.name, originReply.objectName.c_str(), originReply.methodName.c_str(), originReply.scriptNr, originReply.localCallOffset);
 			}
 			// FIXME: implement some real workaround type logic - ignore call, still do call etc.
-			if (workaround.segment == 2)
+			switch (workaround.segment) {
+			case 0: // don't do kernel call, leave acc alone
+				return;
+			case 1: // call kernel anyway
+				break;
+			case 2: // don't do kernel call, fake acc
 				s->r_acc = make_reg(0, workaround.offset);
-			if (workaround.segment)
 				return;
+			default:
+				error("unknown workaround type");
+			}
 		}
 		if (!kernelSubCall.function)
 			error("[VM] k%s: subfunction-id %d requested, but not available", kernelCall.name, subId);


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