X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffg_init.c;h=b8a38f7e63eef81922bbf6a56b02a977ad3a1b3c;hb=155d9d0f851f035871188033b7b757ac2fd02693;hp=a408bbe92aa91007634f848c5cc537924a7b3b27;hpb=831749819dcdc1ea884c18607c2b447bbf5fca72;p=freeglut diff --git a/src/fg_init.c b/src/fg_init.c index a408bbe..b8a38f7 100644 --- a/src/fg_init.c +++ b/src/fg_init.c @@ -681,18 +681,23 @@ void FGAPIENTRY glutInitErrorFuncUcall( FGErrorUC callback, FGCBUserData userDat fgState.ErrorFuncData = userData; } -static void glutInitErrorFuncCallback( const char *fmt, va_list ap, FGCBUserData userData ) +static void fghInitErrorFuncCallback( const char *fmt, va_list ap, FGCBUserData userData ) { - FGError callback = (FGError)userData; - callback( fmt, ap ); + FGError* callback = (FGError*)&userData; + (*callback)( fmt, ap ); } void FGAPIENTRY glutInitErrorFunc( FGError callback ) { - if (callback) - glutInitErrorFuncUcall( glutInitErrorFuncCallback, (FGCBUserData)callback ); - else - glutInitErrorFuncUcall( NULL, NULL ); + if (callback) + { + FGError* reference = &callback; + glutInitErrorFuncUcall( fghInitErrorFuncCallback, *((FGCBUserData*)reference) ); + } + else + { + glutInitErrorFuncUcall( NULL, NULL ); + } } /* @@ -705,18 +710,23 @@ void FGAPIENTRY glutInitWarningFuncUcall( FGWarningUC callback, FGCBUserData use fgState.WarningFuncData = userData; } -static void glutInitWarningFuncCallback( const char *fmt, va_list ap, FGCBUserData userData ) +static void fghInitWarningFuncCallback( const char *fmt, va_list ap, FGCBUserData userData ) { - FGWarning callback = (FGWarning)userData; - callback( fmt, ap ); + FGWarning* callback = (FGWarning*)&userData; + (*callback)( fmt, ap ); } void FGAPIENTRY glutInitWarningFunc( FGWarning callback ) { - if (callback) - glutInitWarningFuncUcall( glutInitWarningFuncCallback, (FGCBUserData)callback ); - else - glutInitWarningFuncUcall( NULL, NULL ); + if (callback) + { + FGWarning* reference = &callback; + glutInitWarningFuncUcall( fghInitWarningFuncCallback, *((FGCBUserData*)reference) ); + } + else + { + glutInitWarningFuncUcall( NULL, NULL ); + } } /*** END OF FILE ***/