From 0fc6406e97114f81e6dd3299fa9d92426c0caae7 Mon Sep 17 00:00:00 2001 From: samsonium Date: Sun, 8 Nov 2026 18:46:21 +0300 Subject: [PATCH] fix: missing freeing and type (in CIF prepare) --- src/vm/fzl_vm_extern.c | 6 ++++++ src/vm/main.c | 4 ++++ tests/programs/pos_math_lib.fzs | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/vm/fzl_vm_extern.c b/src/vm/fzl_vm_extern.c index 118cb04..4451da0 100644 --- a/src/vm/fzl_vm_extern.c +++ b/src/vm/fzl_vm_extern.c @@ -45,6 +45,12 @@ ffi_type *resolve_type(fzl_vm_reader_t *reader, fzl_extern_type_ref_t *ref) case FZL_TYPE_UINT64: return &ffi_type_uint64; + case FZL_TYPE_INT: + return &ffi_type_sint; + + case FZL_TYPE_UINT: + return &ffi_type_uint; + case FZL_TYPE_CHAR: return &ffi_type_schar; diff --git a/src/vm/main.c b/src/vm/main.c index 420f574..bb9efe1 100644 --- a/src/vm/main.c +++ b/src/vm/main.c @@ -145,7 +145,11 @@ int main(int argc, char **argv) if (!vm->prep_fns) { printf("%sError%s: %s\n", FZL_CERROR, FZL_CRST, fzl_vm_externs_geterror()); + + free(args); fzl_vm_free_externs(vm->prep_fns); + fzl_vm_freereader(reader); + fzl_freevm(vm); return -1; } diff --git a/tests/programs/pos_math_lib.fzs b/tests/programs/pos_math_lib.fzs index 6de647f..b8d7988 100644 --- a/tests/programs/pos_math_lib.fzs +++ b/tests/programs/pos_math_lib.fzs @@ -1,4 +1,4 @@ -extern "math" { +extern "libmath" { fn double_num(int num) int; }