diff options
-rw-r--r-- | engines/sword2/interpreter.cpp | 5 | ||||
-rw-r--r-- | engines/sword2/logic.h | 1 |
2 files changed, 4 insertions, 2 deletions
diff --git a/engines/sword2/interpreter.cpp b/engines/sword2/interpreter.cpp index 90bdea38ff..c496d2bafe 100644 --- a/engines/sword2/interpreter.cpp +++ b/engines/sword2/interpreter.cpp @@ -193,7 +193,8 @@ void Logic::setupOpcodes() { OPCODE(fnRefreshInventory), OPCODE(fnChangeShadows) }; - + + _numOpcodes = ARRAYSIZE(opcodes); _opcodes = opcodes; } @@ -609,7 +610,7 @@ int Logic::runScript2(byte *scriptData, byte *objectData, byte *offsetPtr) { case CP_CALL_MCODE: // Call an mcode routine Read16ip(parameter); - assert(parameter < ARRAYSIZE(opcodes)); + assert(parameter < _numOpcodes); // amount to adjust stack by (no of parameters) Read8ip(value); debug(9, "CP_CALL_MCODE: '%s', %d", _opcodes[parameter].desc, value); diff --git a/engines/sword2/logic.h b/engines/sword2/logic.h index cc928858d6..e68d9c9317 100644 --- a/engines/sword2/logic.h +++ b/engines/sword2/logic.h @@ -184,6 +184,7 @@ public: const char *desc; }; const OpcodeEntry *_opcodes; + int _numOpcodes; void setupOpcodes(); int32 fnTestFunction(int32 *params); |