From 0721aef2184a85667d3563c9af618c26e6c95b36 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 19 Mar 2017 21:36:18 +0100 Subject: [PATCH] - fixed: FxAssign used the wrong value type for emitting the store operation. It used the expression's value type, but needs to use the variable's, which can be different when the assignment is synthesized from a builtin function. --- src/scripting/backend/codegen.cpp | 2 +- src/scripting/backend/vmbuilder.cpp | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/scripting/backend/codegen.cpp b/src/scripting/backend/codegen.cpp index 210bbdafd..af3ff1bbb 100644 --- a/src/scripting/backend/codegen.cpp +++ b/src/scripting/backend/codegen.cpp @@ -2563,7 +2563,7 @@ ExpEmit FxAssign::Emit(VMFunctionBuilder *build) if (IsBitWrite == -1) { - build->Emit(ValueType->GetStoreOp(), pointer.RegNum, result.RegNum, build->GetConstantInt(0)); + build->Emit(Base->ValueType->GetStoreOp(), pointer.RegNum, result.RegNum, build->GetConstantInt(0)); } else { diff --git a/src/scripting/backend/vmbuilder.cpp b/src/scripting/backend/vmbuilder.cpp index 899c4aee2..4ed4f5c4e 100644 --- a/src/scripting/backend/vmbuilder.cpp +++ b/src/scripting/backend/vmbuilder.cpp @@ -570,8 +570,6 @@ size_t VMFunctionBuilder::Emit(int opcode, int opa, int opb, int opc) assert(opb >= 0); assert(opc >= 0); - assert(opcode != OP_NOP); - // The following were just asserts, meaning this would silently create broken code if there was an overflow // if this happened in a release build. Not good. // These are critical errors that need to be reported to the user.