From a2f5f673c2ea431b3bb46c62f664c1ad1bea348f Mon Sep 17 00:00:00 2001 From: Dave Beazley Date: Tue, 13 Mar 2001 15:21:42 +0000 Subject: [PATCH] *** empty log message *** git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@1048 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Tools/WAD/Wad/signal.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Tools/WAD/Wad/signal.c b/Tools/WAD/Wad/signal.c index 7897ed0e1..5be51d6d3 100644 --- a/Tools/WAD/Wad/signal.c +++ b/Tools/WAD/Wad/signal.c @@ -60,8 +60,6 @@ char wad_sig_stack[STACK_SIZE]; int wad_heap_overflow = 0; -static wad_stacked_signal = 0; - static void (*sig_callback)(int signo, WadFrame *data, char *ret) = 0; void wad_set_callback(void (*s)(int,WadFrame *,char *ret)) { @@ -270,6 +268,9 @@ void wad_signalhandler(int sig, siginfo_t *si, void *vcontext) { char *retname = 0; unsigned long current_brk; + /* Reset all of the signals while running WAD */ + wad_signal_clear(); + wad_nlr_func = 0; context = (ucontext_t *) vcontext; @@ -330,12 +331,6 @@ void wad_signalhandler(int sig, siginfo_t *si, void *vcontext) { if (wad_debug_mode & DEBUG_SIGNAL) { wad_printf("fault at address %x, pc = %x, sp = %x, fp = %x\n", addr, p_pc, p_sp, p_fp); } - - if (wad_stacked_signal) { - wad_printf("Fault in wad at pc = %x, sp = %x\n", p_pc, p_sp); - exit(1); - } - wad_stacked_signal++; frame = wad_stack_trace(p_pc, p_sp, p_fp); if (!frame) { @@ -422,7 +417,9 @@ void wad_signalhandler(int sig, siginfo_t *si, void *vcontext) { #ifdef WAD_SOLARIS *(npc) = *(pc) + 4; #endif - wad_stacked_signal--; + if (!(wad_debug_mode & DEBUG_ONESHOT)) { + wad_signal_init(); + } return; } exit(1);