/* Standard glutCreateMenu */
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( fghCreateMenuCallback, (FGCBUserData)callback );
+ }
+ FGCBMenu* reference = &callback;
+ return glutCreateMenuUcall( fghCreateMenuCallback, *((FGCBUserData*)reference) );
}
/*