From 485118ecd9640538337672e3a00bb312803da666 Mon Sep 17 00:00:00 2001 From: D G Turner Date: Sun, 14 Jul 2013 05:07:11 +0100 Subject: TUCKER: Add support for skipping unhandled/invalid instructions. This ensures that if any unhandled/invalid instructions are present, they are skipped, rather than locking up engine execution. This is a secondary fix for bug #3614697 - "Spanish version uncompletable at end of 2nd part" and any other future bugs of this type. --- engines/tucker/tucker.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'engines/tucker') diff --git a/engines/tucker/tucker.cpp b/engines/tucker/tucker.cpp index e3fd928e6c..122be958ff 100644 --- a/engines/tucker/tucker.cpp +++ b/engines/tucker/tucker.cpp @@ -3064,8 +3064,9 @@ static const struct { int TuckerEngine::readTableInstructionCode(int *index) { bool match = false; + int nameLen = 0; for (int i = 0; _instructions[i].name; ++i) { - const int nameLen = strlen(_instructions[i].name); + nameLen = strlen(_instructions[i].name); if (_instructions[i].name[1] == '0') { if (_instructions[i].name[0] == _tableInstructionsPtr[0] && _instructions[i].name[2] == _tableInstructionsPtr[2]) { const char digit = _tableInstructionsPtr[1]; @@ -3085,6 +3086,7 @@ int TuckerEngine::readTableInstructionCode(int *index) { } } warning("Unhandled instruction '%c%c%c'", _tableInstructionsPtr[0], _tableInstructionsPtr[1], _tableInstructionsPtr[2]); + _tableInstructionsPtr += nameLen + 1; return kCode_invalid; } -- cgit v1.2.3