From ffe049371a64e0b41fdc777106f768b16b2cd9b2 Mon Sep 17 00:00:00 2001 From: A404M Date: Sat, 24 May 2025 02:36:58 +0330 Subject: fix some unintended stuff --- src/runner/runner.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/runner') diff --git a/src/runner/runner.c b/src/runner/runner.c index c5355cc..9cb67f8 100644 --- a/src/runner/runner.c +++ b/src/runner/runner.c @@ -991,15 +991,13 @@ AstTree *runAstTreeCFunction(AstTree *tree, AstTree **arguments, UNREACHABLE; } - ffi_cif cif; - ffi_type *args[arguments_size]; - void *values[arguments_size]; - ffi_arg rc; - if (funcType->arguments_size != arguments_size) { UNREACHABLE; } + ffi_type *args[arguments_size]; + void *values[arguments_size]; + for (size_t i = 0; i < arguments_size; ++i) { AstTreeTypeFunctionArgument arg = funcType->arguments[i]; args[i] = toFFIType(arg.type); @@ -1014,13 +1012,15 @@ AstTree *runAstTreeCFunction(AstTree *tree, AstTree **arguments, values[i] = arguments[i]->metadata; } + ffi_cif cif; if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, arguments_size, toFFIType(funcType->returnType), args) == FFI_OK) { + ffi_arg rc; ffi_call(&cif, fun, &rc, values); if (typeIsEqual(funcType->returnType, &AST_TREE_VOID_TYPE)) { return &AST_TREE_VOID_TYPE; } else { - size_t size = getSizeOfType(funcType->returnType); + const size_t size = getSizeOfType(funcType->returnType); AstTreeRawValue *value = a404m_malloc(size); memcpy(value, &rc, size); return newAstTree(AST_TREE_TOKEN_RAW_VALUE, value, -- cgit v1.2.3