From 571efe46b7e3825b1d231122964df639847f6350 Mon Sep 17 00:00:00 2001 From: William Bell <62452284+Ugric@users.noreply.github.com> Date: Tue, 2 Sep 2025 18:35:36 +0100 Subject: [PATCH] fix buffer overflow seg fault when using cache --- src/runtime/runtime.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c index 0dfee64..55a6139 100644 --- a/src/runtime/runtime.c +++ b/src/runtime/runtime.c @@ -873,15 +873,13 @@ void runtime(Translated _translated, RuntimeState _state, Stack *stack, continue; } - ArgonObject *args[] = {valueA, valueB}; - state->registers[registerC] = - ARGON_ADDITION_FUNCTION(2, args, err, state); - continue; - } - DO_SUBTRACTION: { - uint8_t registerA = pop_byte(translated, state); - uint8_t registerB = pop_byte(translated, state); - uint8_t registerC = pop_byte(translated, state); + ArgonObject *args[] = {valueA, valueB}; + state->registers[registerC] = ARGON_ADDITION_FUNCTION(2, args, err, state); + goto START; + DO_SUBTRACTION:; + registerA = pop_byte(translated, state); + registerB = pop_byte(translated, state); + registerC = pop_byte(translated, state); ArgonObject *valueA = state->registers[registerA]; ArgonObject *valueB = state->registers[registerB];