From 8a28578ef5527867ff7b67e5993231b606dc1b1f Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Thu, 17 Mar 2011 21:32:37 -0600 Subject: [PATCH] don't defer to previous handler in signal handler It isn't necessarily safe or desireable to call the previous handler even if it's non-null, so we ignore it entirely except to reinstate it when unregistering our own handler. --- src/posix.cpp | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/src/posix.cpp b/src/posix.cpp index 3fcbb218de..2a5c7daf78 100644 --- a/src/posix.cpp +++ b/src/posix.cpp @@ -865,7 +865,7 @@ class MySystem: public System { }; void -handleSignal(int signal, siginfo_t* info, void* context) +handleSignal(int signal, siginfo_t*, void* context) { ucontext_t* c = static_cast(context); @@ -943,22 +943,14 @@ handleSignal(int signal, siginfo_t* info, void* context) default: abort(); } - if (system->oldHandlers[index].sa_flags & SA_SIGINFO - and system->oldHandlers[index].sa_sigaction) - { - system->oldHandlers[index].sa_sigaction(signal, info, context); - } else if (system->oldHandlers[index].sa_handler) { - system->oldHandlers[index].sa_handler(signal); - } else { - switch (signal) { - case VisitSignal: - case InterruptSignal: - case PipeSignal: - break; + switch (signal) { + case VisitSignal: + case InterruptSignal: + case PipeSignal: + break; - default: - abort(); - } + default: + abort(); } }