@@ -9,28 +9,23 @@ SPDX-License-Identifier: MIT
99#ifndef IGC_SIGNAL_GUARD_H
1010#define IGC_SIGNAL_GUARD_H
1111
12- #include < setjmp.h>
13- #include < signal.h>
12+ #include < csignal>
1413
15- namespace IGC {
16- namespace detail {
14+ namespace IGC ::detail {
1715class SignalGuard {
1816public:
1917 SignalGuard (int Signal, void (*Handler)(int , siginfo_t *, void *))
2018 : Signal(Signal) {
2119 sigaction (Signal, nullptr , &SAOld);
22- if (SAOld.sa_handler == SIG_DFL) {
23- struct sigaction SA;
24- sigemptyset (&SA.sa_mask );
25- SA.sa_sigaction = Handler;
26- SA.sa_flags = 0 ;
27- sigaction (Signal, &SA, nullptr );
28- }
20+ struct sigaction SA{};
21+ sigemptyset (&SA.sa_mask );
22+ SA.sa_sigaction = Handler;
23+ SA.sa_flags = 0 ;
24+ sigaction (Signal, &SA, nullptr );
2925 }
3026
3127 ~SignalGuard () {
32- if (SAOld.sa_handler == SIG_DFL)
33- sigaction (Signal, &SAOld, nullptr );
28+ sigaction (Signal, &SAOld, nullptr );
3429 }
3530
3631 SignalGuard (const SignalGuard &) = delete ;
@@ -40,8 +35,7 @@ class SignalGuard {
4035 const int Signal;
4136 struct sigaction SAOld;
4237}; // class SignalGuard
43- } // namespace detail
44- } // namespace IGC
38+ } // namespace IGC::detail
4539
4640#define SET_SIG_HANDLER (SIG ) \
4741 ::IGC::detail::SignalGuard SG##SIG(SIG, signalHandler);
0 commit comments