/srcweb/ode-0.8/ode-error-handler-data.patch
Patch | 161 lines | 140 code | 21 blank | 0 comment | 0 complexity | e6306961f4f28dc8f3f04f67cc777028 MD5 | raw file
Possible License(s): GPL-2.0
- diff -urN a/ode-0.8/include/ode/error.h b/ode-0.8/include/ode/error.h
- --- a/ode-0.8/include/ode/error.h Fri Mar 24 15:36:06 2006
- +++ b/ode-0.8/include/ode/error.h Wed Jul 11 21:36:17 2007
- @@ -34,21 +34,24 @@
- /* all user defined error functions have this type. error and debug functions
- * should not return.
- */
- -typedef void dMessageFunction (int errnum, const char *msg, va_list ap);
- +typedef void dMessageFunction (void *data, int errnum, const char *msg, va_list ap);
-
- /* set a new error, debug or warning handler. if fn is 0, the default handlers
- * are used.
- */
- -ODE_API void dSetErrorHandler (dMessageFunction *fn);
- -ODE_API void dSetDebugHandler (dMessageFunction *fn);
- -ODE_API void dSetMessageHandler (dMessageFunction *fn);
- +ODE_API void dSetErrorHandler (dMessageFunction *fn, void *data);
- +ODE_API void dSetDebugHandler (dMessageFunction *fn, void *data);
- +ODE_API void dSetMessageHandler (dMessageFunction *fn, void *data);
-
- /* return the current error, debug or warning handler. if the return value is
- * 0, the default handlers are in place.
- */
- ODE_API dMessageFunction *dGetErrorHandler(void);
- +ODE_API void *dGetErrorHandlerData(void);
- ODE_API dMessageFunction *dGetDebugHandler(void);
- +ODE_API void *dGetDebugHandlerData(void);
- ODE_API dMessageFunction *dGetMessageHandler(void);
- +ODE_API void *dGetMessageHandlerData(void);
-
- /* generate a fatal error, debug trap or a message. */
- ODE_API void dError (int num, const char *msg, ...);
- diff -urN a/ode-0.8/ode/src/error.cpp b/ode-0.8/ode/src/error.cpp
- --- a/ode-0.8/ode/src/error.cpp Tue Sep 21 16:56:51 2004
- +++ b/ode-0.8/ode/src/error.cpp Wed Jul 11 21:34:22 2007
- @@ -25,25 +25,31 @@
-
-
- static dMessageFunction *error_function = 0;
- +static void *error_data = 0;
- static dMessageFunction *debug_function = 0;
- +static void *debug_data = 0;
- static dMessageFunction *message_function = 0;
- +static void *message_data = 0;
-
-
- -extern "C" void dSetErrorHandler (dMessageFunction *fn)
- +extern "C" void dSetErrorHandler (dMessageFunction *fn, void *data)
- {
- error_function = fn;
- + error_data = data;
- }
-
-
- -extern "C" void dSetDebugHandler (dMessageFunction *fn)
- +extern "C" void dSetDebugHandler (dMessageFunction *fn, void *data)
- {
- debug_function = fn;
- + debug_data = data;
- }
-
-
- -extern "C" void dSetMessageHandler (dMessageFunction *fn)
- +extern "C" void dSetMessageHandler (dMessageFunction *fn, void *data)
- {
- message_function = fn;
- + message_data = data;
- }
-
-
- @@ -53,18 +59,36 @@
- }
-
-
- +extern "C" void *dGetErrorHandlerData()
- +{
- + return error_data;
- +}
- +
- +
- extern "C" dMessageFunction *dGetDebugHandler()
- {
- return debug_function;
- }
-
-
- +extern "C" void *dGetDebugHandlerData()
- +{
- + return debug_data;
- +}
- +
- +
- extern "C" dMessageFunction *dGetMessageHandler()
- {
- return message_function;
- }
-
-
- +extern "C" void *dGetMessageHandlerData()
- +{
- + return message_data;
- +}
- +
- +
- static void printMessage (int num, const char *msg1, const char *msg2,
- va_list ap)
- {
- @@ -86,7 +110,7 @@
- {
- va_list ap;
- va_start (ap,msg);
- - if (error_function) error_function (num,msg,ap);
- + if (error_function) error_function (error_data,num,msg,ap);
- else printMessage (num,"ODE Error",msg,ap);
- exit (1);
- }
- @@ -96,7 +120,7 @@
- {
- va_list ap;
- va_start (ap,msg);
- - if (debug_function) debug_function (num,msg,ap);
- + if (debug_function) debug_function (debug_data,num,msg,ap);
- else printMessage (num,"ODE INTERNAL ERROR",msg,ap);
- // *((char *)0) = 0; ... commit SEGVicide
- abort();
- @@ -107,7 +131,7 @@
- {
- va_list ap;
- va_start (ap,msg);
- - if (message_function) message_function (num,msg,ap);
- + if (message_function) message_function (message_data,num,msg,ap);
- else printMessage (num,"ODE Message",msg,ap);
- }
-
- @@ -132,7 +156,7 @@
- {
- va_list ap;
- va_start (ap,msg);
- - if (error_function) error_function (num,msg,ap);
- + if (error_function) error_function (error_data,num,msg,ap);
- else {
- char s[1000],title[100];
- _snprintf (title,sizeof(title),"ODE Error %d",num);
- @@ -148,7 +172,7 @@
- {
- va_list ap;
- va_start (ap,msg);
- - if (debug_function) debug_function (num,msg,ap);
- + if (debug_function) debug_function (debug_data,num,msg,ap);
- else {
- char s[1000],title[100];
- _snprintf (title,sizeof(title),"ODE INTERNAL ERROR %d",num);
- @@ -164,7 +188,7 @@
- {
- va_list ap;
- va_start (ap,msg);
- - if (message_function) message_function (num,msg,ap);
- + if (message_function) message_function (message_data,num,msg,ap);
- else printMessage (num,"ODE Message",msg,ap);
- }
-