X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffg_init.c;h=b8a38f7e63eef81922bbf6a56b02a977ad3a1b3c;hb=207c3128bf025b5e025bace5c0425d380dd72aa9;hp=c3c00e56e3ea6b32dbd2f17a8a651fdebe6891f7;hpb=f4b802a47ef27c25a283a68932956fb7898771f1;p=freeglut diff --git a/src/fg_init.c b/src/fg_init.c index c3c00e5..b8a38f7 100644 --- a/src/fg_init.c +++ b/src/fg_init.c @@ -683,20 +683,21 @@ void FGAPIENTRY glutInitErrorFuncUcall( FGErrorUC callback, FGCBUserData userDat 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( fghInitErrorFuncCallback, (FGCBUserData)callback ); - } - else - { - glutInitErrorFuncUcall( NULL, NULL ); - } + if (callback) + { + FGError* reference = &callback; + glutInitErrorFuncUcall( fghInitErrorFuncCallback, *((FGCBUserData*)reference) ); + } + else + { + glutInitErrorFuncUcall( NULL, NULL ); + } } /* @@ -711,20 +712,21 @@ void FGAPIENTRY glutInitWarningFuncUcall( FGWarningUC callback, FGCBUserData use 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( fghInitWarningFuncCallback, (FGCBUserData)callback ); - } - else - { - glutInitWarningFuncUcall( NULL, NULL ); - } + if (callback) + { + FGWarning* reference = &callback; + glutInitWarningFuncUcall( fghInitWarningFuncCallback, *((FGCBUserData*)reference) ); + } + else + { + glutInitWarningFuncUcall( NULL, NULL ); + } } /*** END OF FILE ***/