From a901c505abffd13e96a7d304393bb759aad87e59 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Wed, 29 Apr 2020 16:37:25 -0300 Subject: Fixed warning about casts between function pointers gcc now warns (with -Wextra) about casts between pointers to different function types. The type 'void(*)(void)' works as a 'void*' for function pointers, cleaning the warning. --- loadlib.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/loadlib.c b/loadlib.c index 9d86b158..ddfecca9 100644 --- a/loadlib.c +++ b/loadlib.c @@ -67,6 +67,13 @@ static const char *const CLIBS = "_CLIBS"; #define setprogdir(L) ((void)0) +/* +** Special type equivalent to '(void*)' for functions in gcc +** (to supress warnings when converting function pointers) +*/ +typedef void (*voidf)(void); + + /* ** system-dependent functions */ @@ -206,7 +213,7 @@ static void *lsys_load (lua_State *L, const char *path, int seeglb) { static lua_CFunction lsys_sym (lua_State *L, void *lib, const char *sym) { - lua_CFunction f = (lua_CFunction)GetProcAddress((HMODULE)lib, sym); + lua_CFunction f = (lua_CFunction)(voidf)GetProcAddress((HMODULE)lib, sym); if (f == NULL) pusherror(L); return f; } -- cgit v1.2.1