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())
diff --git a/src/events/SDL_quit.c b/src/events/SDL_quit.c
index 5456203..0e5f3e6 100644
--- a/src/events/SDL_quit.c
+++ b/src/events/SDL_quit.c
@@ -46,8 +46,10 @@
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!