From 4ee0bcab671755911ef9705498afd3c299c33c67 Mon Sep 17 00:00:00 2001 From: kayomn Date: Mon, 31 Jul 2023 00:30:44 +0100 Subject: [PATCH] Fix incorrect stack popping order in set_dynamic opcode --- source/ona/kym/Chunk.zig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/ona/kym/Chunk.zig b/source/ona/kym/Chunk.zig index 7f4cdd2..d3fd37b 100644 --- a/source/ona/kym/Chunk.zig +++ b/source/ona/kym/Chunk.zig @@ -378,6 +378,10 @@ fn execute(self: *Self, env: *kym.RuntimeEnv) kym.RuntimeError!?*kym.RuntimeRef }, .set_dynamic => { + const value_ref = try env.pop_local(); + + defer env.discard(value_ref); + const index_ref = try env.pop_local() orelse { return env.raise(error.TypeMismatch, "nil is not a valid index"); }; @@ -390,10 +394,6 @@ fn execute(self: *Self, env: *kym.RuntimeEnv) kym.RuntimeError!?*kym.RuntimeRef defer env.discard(indexable_ref); - const value_ref = try env.pop_local(); - - defer env.discard(value_ref); - try env.set_dynamic(try kym.unbox_dynamic(env, indexable_ref), index_ref, value_ref); },