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; }