Fixed warnings on Linux where GCC under padantic complained ISO C casting wasn't...
[freeglut] / src / fg_menu.c
index 1b07b1a..daad294 100644 (file)
@@ -784,25 +784,30 @@ int FGAPIENTRY glutCreateMenuUcall( FGCBMenuUC callback, FGCBUserData userData )
 {
     /* The menu object creation code resides in fg_structure.c */
     FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutCreateMenuUcall" );
-    if (fgState.ActiveMenus)
-        fgError("Menu manipulation not allowed while menus in use.");
+       if (fgState.ActiveMenus)
+       {
+               fgError( "Menu manipulation not allowed while menus in use." );
+       }
 
     return fgCreateMenu( callback, userData )->ID;
 }
 
 /* Standard glutCreateMenu */
-static void glutCreateMenuCallback( int menu, FGCBUserData userData )
+static void fghCreateMenuCallback( int menu, FGCBUserData userData )
 {
-    FGCBMenu callback = (FGCBMenu)userData;
-    callback( menu );
+    FGCBMenu* callback = (FGCBMenu*)&userData;
+    (*callback)( menu );
 }
 
 int FGAPIENTRY glutCreateMenu( FGCBMenu callback )
 {
     FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutCreateMenu" );
     if (!callback)
+    {
         return glutCreateMenuUcall( NULL, NULL );
-    return glutCreateMenuUcall( glutCreateMenuCallback, (FGCBUserData)callback );
+    }
+    FGCBMenu* reference = &callback;
+    return glutCreateMenuUcall( fghCreateMenuCallback, *((FGCBUserData*)reference) );
 }
 
 /*