2
0
Эх сурвалжийг харах

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.
Roberto Ierusalimschy 5 жил өмнө
parent
commit
a901c505ab
1 өөрчлөгдсөн 8 нэмэгдсэн , 1 устгасан
  1. 8 1
      loadlib.c

+ 8 - 1
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;
 }