From 784899b9d1d857c382213d63423f3b36909cac87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Tue, 24 Sep 2019 12:21:17 +0200 Subject: [PATCH] Error handling: Added LOW_SET_ONERROR(). --- src/pike_error.h | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/pike_error.h b/src/pike_error.h index e9e5cd83d8..05698c194e 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[]; -- GitLab