diff --git a/userspace/libraries/LibC/signal.cpp b/userspace/libraries/LibC/signal.cpp index f8a1f1d1..e27e2355 100644 --- a/userspace/libraries/LibC/signal.cpp +++ b/userspace/libraries/LibC/signal.cpp @@ -121,14 +121,14 @@ int sigismember(const sigset_t* set, int signo) void (*signal(int sig, void (*func)(int)))(int) { - struct sigaction act; + struct sigaction act, oact; act.sa_handler = func; act.sa_flags = 0; - int ret = sigaction(sig, &act, nullptr); + int ret = sigaction(sig, &act, &oact); if (ret == -1) return SIG_ERR; - return func; + return oact.sa_handler; } int sigpending(sigset_t* set)