diff --git a/crates/anyref-xform/src/lib.rs b/crates/anyref-xform/src/lib.rs index 747deba6..886002a9 100644 --- a/crates/anyref-xform/src/lib.rs +++ b/crates/anyref-xform/src/lib.rs @@ -510,14 +510,14 @@ impl Transform<'_> { // Store an anyref at an offset from our function's stack // pointer frame. let get_fp = builder.local_get(fp); - next_stack_offset += 1; - let (index, idx_local) = if next_stack_offset == 1 { + let (index, idx_local) = if next_stack_offset == 0 { (get_fp, fp) } else { let rhs = builder.i32_const(next_stack_offset); let add = builder.binop(BinaryOp::I32Add, get_fp, rhs); (builder.local_tee(scratch_i32, add), scratch_i32) }; + next_stack_offset += 1; let store = builder.table_set(self.table, index, local); let get = builder.local_get(idx_local); builder.with_side_effects(vec![store], get, Vec::new())