From 80f82acdf88c68811711ed43be487f690dc0cf84 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Mon, 1 Dec 2025 17:31:55 -0600 Subject: [PATCH] quit: don't call signal() if we're using sigaction() At best, this is a no-op. At worst, it might: - Clobber a signal handler someone registered after us - Overwrite the signal mask or flags - Cause unregistration to fail (sigaction() isn't guaranteed to return the exact pointer passed to signal()) (cherry picked from commit 6d99204a829879a3dbe975c6158228d07bfc1a0d) --- src/events/SDL_quit.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/events/SDL_quit.c b/src/events/SDL_quit.c index 5456203ee2..0e5f3e6c6d 100644 --- a/src/events/SDL_quit.c +++ b/src/events/SDL_quit.c @@ -46,8 +46,10 @@ static bool send_foregrounding_pending = false; static void SDL_HandleSIG(int sig) { - // Reset the signal handler +#ifndef HAVE_SIGACTION + // Reset the signal handler if it was installed with signal() (void)signal(sig, SDL_HandleSIG); +#endif // Send a quit event next time the event loop pumps. // We can't send it in signal handler; SDL_malloc() might be interrupted!