diff --git a/src/pike_error.h b/src/pike_error.h index e9e5cd83d80dd5d4e1e0bcf74604eb1101e4870d..05698c194ec45dae893ba872042d85ae91f06820 100644 --- a/src/pike_error.h +++ b/src/pike_error.h @@ -163,25 +163,27 @@ PMOD_EXPORT extern const char msg_unsetjmp_nosync_2[]; #ifdef PIKE_DEBUG -#define SET_ONERROR(X,Y,Z) \ - do{ \ - check_recovery_context(); \ - OED_FPRINTF((stderr, "SET_ONERROR(%p, %p, %p) %s:%d\n", \ - &(X), (Y), (void *)(Z), __FILE__, __LINE__)); \ - X.frame_pointer = Pike_interpreter.frame_pointer; \ - X.func=(error_call)(Y); \ - DO_IF_DMALLOC( if( X.func == free ) X.func=dmalloc_free); \ - X.arg=(void *)(Z); \ - if(!Pike_interpreter.recoveries) { \ - X.previous = NULL; \ - break; \ - } \ - X.previous=Pike_interpreter.recoveries->onerror; \ - X.file = __FILE__; \ - X.line = __LINE__; \ - Pike_interpreter.recoveries->onerror=&X; \ +#define LOW_SET_ONERROR(X,Y,Z) \ + do{ \ + check_recovery_context(); \ + OED_FPRINTF((stderr, "SET_ONERROR(%p, %p, %p) %s:%d\n", \ + (X), (Y), (void *)(Z), __FILE__, __LINE__)); \ + (X)->frame_pointer = Pike_interpreter.frame_pointer; \ + (X)->func = (error_call)(Y); \ + DO_IF_DMALLOC( if( (X)->func == free ) (X)->func = dmalloc_free); \ + (X)->arg = (void *)(Z); \ + if (!Pike_interpreter.recoveries) { \ + (X)->previous = NULL; \ + break; \ + } \ + (X)->previous = Pike_interpreter.recoveries->onerror; \ + (X)->file = __FILE__; \ + (X)->line = __LINE__; \ + Pike_interpreter.recoveries->onerror = (X); \ }while(0) +#define SET_ONERROR(X,Y,Z) LOW_SET_ONERROR(&X, Y, Z) + PMOD_EXPORT extern const char msg_last_setjmp[]; PMOD_EXPORT extern const char msg_unset_onerr_nosync_1[]; PMOD_EXPORT extern const char msg_unset_onerr_nosync_2[];