From 9e104a3d4abe3bfe6e32283e7a0873459e55f2e0 Mon Sep 17 00:00:00 2001 From: Fierelier Date: Wed, 12 Mar 2025 07:57:29 +0100 Subject: [PATCH 1/3] Initialize opStack with 0 Fix for #38 --- src/vm/vm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vm/vm.c b/src/vm/vm.c index 88d6092..aae434f 100644 --- a/src/vm/vm.c +++ b/src/vm/vm.c @@ -870,7 +870,7 @@ locals from sp static int VM_CallInterpreted(vm_t* vm, int* args) { - uint8_t stack[OPSTACK_SIZE + 15]; + uint8_t stack[OPSTACK_SIZE + 15] = {0}; int* opStack; uint8_t opStackOfs; int programCounter; From 401c9ffb87610837824ae033e0f890300b62bda7 Mon Sep 17 00:00:00 2001 From: Fierelier Date: Wed, 12 Mar 2025 07:58:42 +0100 Subject: [PATCH 2/3] Actually raise error on invalid system call Might fix #39 ? --- src/main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main.c b/src/main.c index 59f86e2..9c97205 100644 --- a/src/main.c +++ b/src/main.c @@ -169,6 +169,9 @@ intptr_t systemCalls(vm_t* vm, intptr_t* args) default: fprintf(stderr, "Bad system call: %i\n", id); + vm->lastError = VM_PC_OUT_OF_RANGE; + Com_Error(vm->lastError, "VM pc out of range"); + return -1; } return 0; } From a38b1c710650175ed35f3d090112b72ff0837fda Mon Sep 17 00:00:00 2001 From: Fierelier Date: Wed, 12 Mar 2025 08:20:58 +0100 Subject: [PATCH 3/3] I meant to commit this... Facepalm --- src/vm/vm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vm/vm.c b/src/vm/vm.c index aae434f..ec26c48 100644 --- a/src/vm/vm.c +++ b/src/vm/vm.c @@ -870,8 +870,8 @@ locals from sp static int VM_CallInterpreted(vm_t* vm, int* args) { - uint8_t stack[OPSTACK_SIZE + 15] = {0}; - int* opStack; + uint8_t stack[OPSTACK_SIZE + 15]; + int* opStack = 0; uint8_t opStackOfs; int programCounter; int programStack;