From 69c4940b27c3e3ca176d7583c8836e664105a339 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Thu, 29 May 2025 00:58:30 +0300 Subject: [PATCH] LibC: Fix `signal` return value signal was returning `func` when it should've returned the old handler --- userspace/libraries/LibC/signal.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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)