From: Aki Tuomi Date: Mon, 22 Mar 2021 08:36:24 +0000 (+0200) Subject: lib-lua: Add callback typecheck for dlua_pcall_yieldable X-Git-Tag: 2.3.15~169 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=12f0271e176c6697675467279d7e51ca5b84195b;p=thirdparty%2Fdovecot%2Fcore.git lib-lua: Add callback typecheck for dlua_pcall_yieldable --- diff --git a/src/lib-lua/dlua-resume.c b/src/lib-lua/dlua-resume.c index 763fd193e5..1e792558a4 100644 --- a/src/lib-lua/dlua-resume.c +++ b/src/lib-lua/dlua-resume.c @@ -150,6 +150,7 @@ void dlua_pcall_yieldable_resume(lua_State *L, int nargs) * * Returns -1 on error or 0 on success. */ +#undef dlua_pcall_yieldable int dlua_pcall_yieldable(lua_State *L, const char *func_name, int nargs, dlua_pcall_yieldable_callback_t *callback, void *context, const char **error_r) diff --git a/src/lib-lua/dlua-script-private.h b/src/lib-lua/dlua-script-private.h index bb38ba7b28..2beee6190d 100644 --- a/src/lib-lua/dlua-script-private.h +++ b/src/lib-lua/dlua-script-private.h @@ -193,9 +193,12 @@ void dlua_script_close_thread(struct dlua_script *script, lua_State **_L); * 0 = function called, callback will be called in the future */ int dlua_pcall_yieldable(lua_State *L, const char *func_name, int nargs, - void (*callback)(lua_State *, void *, int), + dlua_pcall_yieldable_callback_t *callback, void *context, const char **error_r); - +#define dlua_pcall_yieldable(L, func_name, nargs, callback, context, error_r) \ + dlua_pcall_yieldable(L, func_name + \ + CALLBACK_TYPECHECK(callback, void (*)(lua_State *, typeof(context), int)), \ + nargs, (dlua_pcall_yieldable_callback_t *)callback, context, error_r) /* * Resume yielded function execution. *