aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/vm.cpp
diff options
context:
space:
mode:
authorMartin Kiewitz2010-07-09 21:51:20 +0000
committerMartin Kiewitz2010-07-09 21:51:20 +0000
commit0cd97ca5c5394aebf542ad7357d8bb0983b2ea09 (patch)
treecdc9591968a0b57fd42323a7f01fb07e668f4c0f /engines/sci/engine/vm.cpp
parent02cac2d5aadaf73385ea979afdf6222a72b026cf (diff)
downloadscummvm-rg350-0cd97ca5c5394aebf542ad7357d8bb0983b2ea09.tar.gz
scummvm-rg350-0cd97ca5c5394aebf542ad7357d8bb0983b2ea09.tar.bz2
scummvm-rg350-0cd97ca5c5394aebf542ad7357d8bb0983b2ea09.zip
SCI: improve error message on subcall signature mismatch
svn-id: r50774
Diffstat (limited to 'engines/sci/engine/vm.cpp')
-rw-r--r--engines/sci/engine/vm.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp
index 0663c18338..a354491a83 100644
--- a/engines/sci/engine/vm.cpp
+++ b/engines/sci/engine/vm.cpp
@@ -831,7 +831,12 @@ static void callKernelFunc(EngineState *s, int kernelCallNr, int argc) {
workaround = trackOriginAndFindWorkaround(0, kernelSubCall.workarounds, &originReply);
if ((workaround.segment == 0xFFFF) && (workaround.offset == 0xFFFF)) {
kernel->signatureDebug(kernelSubCall.signature, argc, argv);
- error("[VM] k%s (%x) signature mismatch via method %s::%s (script %d, localCall %x)", kernelSubCall.name, kernelCallNr, originReply.objectName.c_str(), originReply.methodName.c_str(), originReply.scriptNr, originReply.localCallOffset);
+ int callNameLen = strlen(kernelCall.name);
+ if (strncmp(kernelCall.name, kernelSubCall.name, callNameLen) == 0) {
+ const char *subCallName = kernelSubCall.name + callNameLen;
+ error("[VM] k%s(%s): signature mismatch via method %s::%s (script %d, localCall %x)", kernelCall.name, subCallName, originReply.objectName.c_str(), originReply.methodName.c_str(), originReply.scriptNr, originReply.localCallOffset);
+ }
+ 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)