From d92a0366638ab7073dfde025da7af96ce3007219 Mon Sep 17 00:00:00 2001 From: CismonX Date: Mon, 22 Jun 2020 01:05:36 +0800 Subject: [PATCH] proper handling of runtime errors --- src/runtime.c | 3 --- src/vm_stack.c | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/runtime.c b/src/runtime.c index 1d6db39..c4a1869 100644 --- a/src/runtime.c +++ b/src/runtime.c @@ -283,9 +283,6 @@ u6a_runtime_execute(FILE* restrict istream, FILE* restrict ostream) { VM_JMP(0x03); case u6a_vf_c: cont = u6a_vm_stack_save(&stack_ctx); - if (UNLIKELY(cont == NULL)) { - goto runtime_error; - } STACK_PUSH2(VM_VAR_JMP, vm_var_fn_addref(arg)); ACC_FN_REF(u6a_vf_c1, POOL_ALLOC2_PTR(cont, ins)); VM_JMP(0x03); diff --git a/src/vm_stack.c b/src/vm_stack.c index 6335d61..bb02524 100644 --- a/src/vm_stack.c +++ b/src/vm_stack.c @@ -45,7 +45,7 @@ vm_stack_dup(struct u6a_vm_stack_ctx* ctx, struct u6a_vm_stack* vs) { struct u6a_vm_stack* dup_stack = malloc(size); if (UNLIKELY(dup_stack == NULL)) { u6a_err_bad_alloc(ctx->err_stage, size); - return NULL; + U6A_VM_ERR(ctx); } memcpy(dup_stack, vs, sizeof(struct u6a_vm_stack) + (vs->top + 1) * sizeof(struct u6a_vm_var_fn)); dup_stack->refcnt = 0;