diff options
-rw-r--r-- | src/signal/__signal_handler.c | 5 | ||||
-rw-r--r-- | src/signal/raise.c | 4 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/signal/__signal_handler.c b/src/signal/__signal_handler.c index 9cd9eda7..0c0fd719 100644 --- a/src/signal/__signal_handler.c +++ b/src/signal/__signal_handler.c @@ -1,9 +1,14 @@ #include <stddef.h> #include "_signal.h" +#include "stdlib/_stdlib.h" #include "_safety.h" void __signal_handler(int sig) { + if (__stdlib.exit_called == QUICK) { + __undefined("signal %d occured during quick_exit", sig); + } + ___signal.current = sig; if (___signal.handlers[sig] != NULL) { ___signal.handlers[sig](sig); diff --git a/src/signal/raise.c b/src/signal/raise.c index 1a8732ef..bb2391df 100644 --- a/src/signal/raise.c +++ b/src/signal/raise.c @@ -4,6 +4,7 @@ #endif #include <signal.h> +#include "stdlib/_stdlib.h" #ifdef POSIX_FORCED #include "_syscall.h" @@ -18,6 +19,9 @@ int raise(int sig) { SIGNAL_SAFE(0); + if (__stdlib.exit_called == QUICK) { + __undefined("raise() called during quick_exit()"); + } /* RETURN_FAILURE(NONZERO); RETURN_SUCCESS(0); |