diff options
| author | Mel <einebeere@gmail.com> | 2022-08-16 19:49:59 +0000 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-08-16 20:12:20 +0000 |
| commit | 64d438c91ace51bfda7bff50d381b62f5785f72a (patch) | |
| tree | ea1b6a23a6ad05c040603dd4d00887332391e197 /pkg/lang/vm | |
| parent | 8193e5c590177b91b51acd818e8a365ab6845988 (diff) | |
| download | jinx-64d438c91ace51bfda7bff50d381b62f5785f72a.tar.zst jinx-64d438c91ace51bfda7bff50d381b62f5785f72a.zip | |
Ensure correct argument stack order in all cases
Diffstat (limited to 'pkg/lang/vm')
| -rw-r--r-- | pkg/lang/vm/exec.go | 5 | ||||
| -rw-r--r-- | pkg/lang/vm/vm_test.go | 4 |
2 files changed, 4 insertions, 5 deletions
diff --git a/pkg/lang/vm/exec.go b/pkg/lang/vm/exec.go index ade6cc0..34cf444 100644 --- a/pkg/lang/vm/exec.go +++ b/pkg/lang/vm/exec.go @@ -836,9 +836,8 @@ func (vm *VM) execCall(argCount uint) error { var err error args := make([]value.Value, argCount) - for i := 0; i < int(argCount); i++ { - args[i], err = vm.stack.Pop() - if err != nil { + for i := int(argCount - 1); i >= 0; i-- { + if args[i], err = vm.stack.Pop(); err != nil { return err } } diff --git a/pkg/lang/vm/vm_test.go b/pkg/lang/vm/vm_test.go index 17edb2e..178d756 100644 --- a/pkg/lang/vm/vm_test.go +++ b/pkg/lang/vm/vm_test.go @@ -326,11 +326,11 @@ func TestTypeConstruct(t *testing.T) { anchor_type get_local 2 - get_local 1 + get_local 0 set_member "name" get_local 2 - get_local 0 + get_local 1 set_member "age" ret |
