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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sun Jul 11 23:03:23 CEST 2010


Revision: 50807
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50807&view=rev
Author:   m_kiewitz
Date:     2010-07-11 21:03:23 +0000 (Sun, 11 Jul 2010)

Log Message:
-----------
SCI: fix signature loading for subops, fixes kq6 signature mismatch

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

Modified: scummvm/trunk/engines/sci/engine/kernel.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.cpp	2010-07-11 19:16:16 UTC (rev 50806)
+++ scummvm/trunk/engines/sci/engine/kernel.cpp	2010-07-11 21:03:23 UTC (rev 50807)
@@ -1180,27 +1180,29 @@
 					if ((kernelSubMap->fromVersion == SCI_VERSION_NONE) || (kernelSubMap->fromVersion <= mySubVersion))
 						if ((kernelSubMap->toVersion == SCI_VERSION_NONE) || (kernelSubMap->toVersion >= mySubVersion)) {
 							uint subId = kernelSubMap->id;
-							subFunctions[subId].function = kernelSubMap->function;
-							subFunctions[subId].name = kernelSubMap->name;
-							subFunctions[subId].workarounds = kernelSubMap->workarounds;
-							if (kernelSubMap->signature) {
-								subFunctions[subId].signature = parseKernelSignature(kernelSubMap->name, kernelSubMap->signature);
-							} else {
-								// we go back the submap to find the previous signature for that kernel call
-								const SciKernelMapSubEntry *kernelSubMapBack = kernelSubMap;
-								uint kernelSubLeft = kernelSubNr;
-								while (kernelSubLeft) {
-									kernelSubLeft--;
-									kernelSubMapBack--;
-									if (kernelSubMapBack->name == kernelSubMap->name) {
-										if (kernelSubMapBack->signature) {
-											subFunctions[subId].signature = parseKernelSignature(kernelSubMap->name, kernelSubMapBack->signature);
-											break;
+							if (!subFunctions[subId].function) {
+								subFunctions[subId].function = kernelSubMap->function;
+								subFunctions[subId].name = kernelSubMap->name;
+								subFunctions[subId].workarounds = kernelSubMap->workarounds;
+								if (kernelSubMap->signature) {
+									subFunctions[subId].signature = parseKernelSignature(kernelSubMap->name, kernelSubMap->signature);
+								} else {
+									// we go back the submap to find the previous signature for that kernel call
+									const SciKernelMapSubEntry *kernelSubMapBack = kernelSubMap;
+									uint kernelSubLeft = kernelSubNr;
+									while (kernelSubLeft) {
+										kernelSubLeft--;
+										kernelSubMapBack--;
+										if (kernelSubMapBack->name == kernelSubMap->name) {
+											if (kernelSubMapBack->signature) {
+												subFunctions[subId].signature = parseKernelSignature(kernelSubMap->name, kernelSubMapBack->signature);
+												break;
+											}
 										}
 									}
+									if (!subFunctions[subId].signature)
+										error("k%s: no previous signatures", kernelSubMap->name);
 								}
-								if (!subFunctions[subId].signature)
-									error("k%s: no previous signatures", kernelSubMap->name);
 							}
 						}
 					kernelSubMap++;


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