X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffg_menu.c;h=daad294a7ee64a5289ca524da9739eb0b1be38a6;hb=155d9d0f851f035871188033b7b757ac2fd02693;hp=ae7405c7158c54332ca4cf002ef0c44a44094a5d;hpb=369e02f3912ca0f768d98e49fb1198e80f44e078;p=freeglut diff --git a/src/fg_menu.c b/src/fg_menu.c index ae7405c..daad294 100644 --- a/src/fg_menu.c +++ b/src/fg_menu.c @@ -795,18 +795,19 @@ int FGAPIENTRY glutCreateMenuUcall( FGCBMenuUC callback, FGCBUserData userData ) /* 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) ); } /*