diff --git a/src/scripting/backend/codegen.cpp b/src/scripting/backend/codegen.cpp index e41b4b1e8..f126f288e 100644 --- a/src/scripting/backend/codegen.cpp +++ b/src/scripting/backend/codegen.cpp @@ -10282,6 +10282,7 @@ ExpEmit FxIfStatement::Emit(VMFunctionBuilder *build) { ExpEmit v; size_t jumpspot = ~0u; + bool whenTrueReturns = false; TArray yes, no; Condition->EmitCompare(build, WhenTrue == nullptr, yes, no); @@ -10289,13 +10290,14 @@ ExpEmit FxIfStatement::Emit(VMFunctionBuilder *build) if (WhenTrue != nullptr) { build->BackpatchListToHere(yes); + whenTrueReturns = WhenTrue->CheckReturn(); WhenTrue->EmitStatement(build); } if (WhenFalse != nullptr) { if (WhenTrue != nullptr) { - if (!WhenTrue->CheckReturn()) jumpspot = build->Emit(OP_JMP, 0); // no need to emit a jump if the block returns. + if (!whenTrueReturns) jumpspot = build->Emit(OP_JMP, 0); // no need to emit a jump if the block returns. build->BackpatchListToHere(no); } WhenFalse->EmitStatement(build);