Browse Source

Fix: vm (close upvalues)

AnnulusGames 1 year ago
parent
commit
bf68a6bebd
1 changed files with 2 additions and 1 deletions
  1. 2 1
      src/Lua/CodeAnalysis/Compilation/LuaCompiler.cs

+ 2 - 1
src/Lua/CodeAnalysis/Compilation/LuaCompiler.cs

@@ -845,7 +845,8 @@ public sealed class LuaCompiler : ISyntaxNodeVisitor<ScopeCompilationContext, bo
 
         CompileConditionNode(node.ConditionNode, context, false);
         var a = scopeContext.HasCapturedLocalVariables ? scopeContext.StackPosition : (byte)0;
-        context.PushInstruction(Instruction.Jmp(a, conditionIndex - context.Function.Instructions.Length), node.Position);
+        scopeContext.PushInstruction(Instruction.Jmp(a, conditionIndex - context.Function.Instructions.Length), node.Position);
+        scopeContext.TryPushCloseUpValue(scopeContext.StackPosition, node.Position);
 
         // resolve break statements inside while block
         context.Function.ResolveAllBreaks(scopeContext.StackPosition, context.Function.Instructions.Length - 1, scopeContext);