From 0cd97ca5c5394aebf542ad7357d8bb0983b2ea09 Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Fri, 9 Jul 2010 21:51:20 +0000 Subject: SCI: improve error message on subcall signature mismatch svn-id: r50774 --- engines/sci/engine/vm.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'engines/sci') 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) -- cgit v1.2.3