From 08f1727b0813c9e20a2462402f58c4578c5902c8 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Sat, 2 Apr 2016 00:04:00 +0200 Subject: SCI: Improve kernel subfunction logging ExecStack now stores the kernel call number as well as the subfunction. This allows kStub and backtraces to log the actual subfunction called. The kernel call number in ExecStack used to be stored in the debugSelector field. It now has its own field, to avoid confusion. --- engines/sci/engine/kernel.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'engines/sci/engine/kernel.cpp') diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index 796dea2382..4370e6de04 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -91,6 +91,20 @@ const Common::String &Kernel::getKernelName(uint number) const { return _kernelNames[number]; } +Common::String Kernel::getKernelName(uint number, uint subFunction) const { + // FIXME: The following check is a temporary workaround for an issue + // leading to crashes when using the debugger's backtrace command. + if (number >= _kernelFuncs.size()) + return _invalid; + const KernelFunction &kernelCall = _kernelFuncs[number]; + + if (subFunction >= kernelCall.subFunctionCount) + return _invalid; + + return kernelCall.subFunctions[subFunction].name; +} + + int Kernel::findKernelFuncPos(Common::String kernelFuncName) { for (uint32 i = 0; i < _kernelNames.size(); i++) if (_kernelNames[i] == kernelFuncName) -- cgit v1.2.3 From 4b72a42da93da5560ecde38010d328196ff727fd Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Sat, 2 Jul 2016 21:31:29 +0200 Subject: SCI: Remove presumably long-outdated FIXME --- engines/sci/engine/kernel.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'engines/sci/engine/kernel.cpp') diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index 4370e6de04..2fc338b618 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -84,23 +84,15 @@ uint Kernel::getKernelNamesSize() const { } const Common::String &Kernel::getKernelName(uint number) const { - // FIXME: The following check is a temporary workaround for an issue - // leading to crashes when using the debugger's backtrace command. - if (number >= _kernelNames.size()) - return _invalid; + assert(number < _kernelFuncs.size()); return _kernelNames[number]; } Common::String Kernel::getKernelName(uint number, uint subFunction) const { - // FIXME: The following check is a temporary workaround for an issue - // leading to crashes when using the debugger's backtrace command. - if (number >= _kernelFuncs.size()) - return _invalid; + assert(number < _kernelFuncs.size()); const KernelFunction &kernelCall = _kernelFuncs[number]; - if (subFunction >= kernelCall.subFunctionCount) - return _invalid; - + assert(subFunction < kernelCall.subFunctionCount); return kernelCall.subFunctions[subFunction].name; } -- cgit v1.2.3