Fixed OPCODE_STORE_FIELD_REF incorrectly not skipping field on exception

It would cause invalid opcode afterwards.
This commit is contained in:
smallmodel 2023-11-14 00:05:41 +01:00
parent eeb697570d
commit befcedcf58
No known key found for this signature in database
GPG key ID: A96F163ED4891440

View file

@ -1512,7 +1512,6 @@ void ScriptVM::Execute(ScriptVariable *data, int dataSize, str label)
if (listener == nullptr) {
fieldNameIndex = fetchActualOpcodeValue<op_name_t>();
skipField();
ScriptError(
"Field '%s' applied to NULL listener", Director.GetString(fieldNameIndex).c_str()
);
@ -1527,6 +1526,7 @@ void ScriptVM::Execute(ScriptVariable *data, int dataSize, str label)
} catch (...) {
ScriptVariable *const pTop = m_VMStack.GetTopPtr();
pTop->setRefValue(pTop);
skipField();
throw;
}
break;