X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffg_menu.c;h=daad294a7ee64a5289ca524da9739eb0b1be38a6;hb=002dae879eda329f38fe65cb6f99d4f481a2eb47;hp=1b07b1ab07c6aeb2bde6d42032e5573b808573c8;hpb=831749819dcdc1ea884c18607c2b447bbf5fca72;p=freeglut diff --git a/src/fg_menu.c b/src/fg_menu.c index 1b07b1a..daad294 100644 --- a/src/fg_menu.c +++ b/src/fg_menu.c @@ -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) ); } /*