summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/signal/__signal_handler.c5
-rw-r--r--src/signal/raise.c4
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);