Skip to content

Commit d0a9af7

Browse files
stefan-iligcbot
authored andcommitted
Revert Don't partially set signal handlers
Don't partially set signal handlers
1 parent 748987f commit d0a9af7

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

IGC/AdaptorOCL/ocl_igc_interface/impl/igc_signal_guard.h

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,19 @@ class SignalGuard {
1616
public:
1717
SignalGuard(int Signal, void (*Handler)(int, siginfo_t *, void *)) : Signal(Signal) {
1818
sigaction(Signal, nullptr, &SAOld);
19-
struct sigaction SA{};
20-
sigemptyset(&SA.sa_mask);
21-
SA.sa_sigaction = Handler;
22-
SA.sa_flags = 0;
23-
sigaction(Signal, &SA, nullptr);
19+
if (SAOld.sa_handler == SIG_DFL) {
20+
struct sigaction SA;
21+
sigemptyset(&SA.sa_mask);
22+
SA.sa_sigaction = Handler;
23+
SA.sa_flags = 0;
24+
sigaction(Signal, &SA, nullptr);
25+
}
2426
}
2527

26-
~SignalGuard() { sigaction(Signal, &SAOld, nullptr); }
28+
~SignalGuard() {
29+
if (SAOld.sa_handler == SIG_DFL)
30+
sigaction(Signal, &SAOld, nullptr);
31+
}
2732

2833
SignalGuard(const SignalGuard &) = delete;
2934
SignalGuard &operator=(const SignalGuard &) = delete;

0 commit comments

Comments
 (0)