From e0cf0c8842de93096a4dc81ac5482f27d9075be2 Mon Sep 17 00:00:00 2001 From: Ivan Folgueira Bande Date: Thu, 11 Dec 2025 17:11:59 +0100 Subject: [PATCH] fixes for proper proc exposure to c --- ffi/ffi_context.nim | 2 +- ffi/internal/ffi_macro.nim | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/ffi/ffi_context.nim b/ffi/ffi_context.nim index d89e3b7..491f135 100644 --- a/ffi/ffi_context.nim +++ b/ffi/ffi_context.nim @@ -184,7 +184,7 @@ proc createFFIContext*[T](): Result[ptr FFIContext[T], string] = return ok(ctx) -proc destroyFFIContext*[T](ctx: ptr FFIContext): Result[void, string] = +proc destroyFFIContext*[T](ctx: ptr FFIContext[T]): Result[void, string] = ctx.running.store(false) let signaledOnTime = ctx.reqSignal.fireSync().valueOr: diff --git a/ffi/internal/ffi_macro.nim b/ffi/internal/ffi_macro.nim index 33f7dd3..129287d 100644 --- a/ffi/internal/ffi_macro.nim +++ b/ffi/internal/ffi_macro.nim @@ -315,8 +315,6 @@ macro registerReqFFI*(reqTypeName, reqHandler, body: untyped): untyped = let deleteProc = buildFfiDeleteReqProc(reqTypeName, fields) result = newStmtList(typeDef, ffiNewReqProc, deleteProc, processProc, addNewReqToReg) - # echo "Registered FFI request: " & result.repr - macro processReq*( reqType, ctx, callback, userData: untyped, args: varargs[untyped] ): untyped = @@ -335,7 +333,7 @@ macro processReq*( result = quote: block: let res = `sendCall` - if res.isErr: + if res.isErr(): let msg = "error in sendRequestToFFIThread: " & res.error `callback`(RET_ERR, unsafeAddr msg[0], cast[csize_t](msg.len), `userData`) return RET_ERR @@ -401,7 +399,7 @@ macro ffi*(prc: untyped): untyped = name = procName, params = newParams, body = ffiBody, - pragmas = newTree(nnkPragma, ident "dynlib", ident "exportc"), + pragmas = newTree(nnkPragma, ident "dynlib", ident "exportc", ident "cdecl"), ) var anonymousProcNode = newProc(