diff options
-rw-r--r-- | gdbsupport/scoped_ignore_signal.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/gdbsupport/scoped_ignore_signal.h b/gdbsupport/scoped_ignore_signal.h index a14c967..57dd4b6 100644 --- a/gdbsupport/scoped_ignore_signal.h +++ b/gdbsupport/scoped_ignore_signal.h @@ -58,7 +58,6 @@ public: if (!m_was_blocked) { sigset_t set; - const timespec zero_timeout = {}; sigemptyset (&set); sigaddset (&set, Sig); @@ -66,7 +65,19 @@ public: /* If we got a pending Sig signal, consume it before unblocking. */ if (ConsumePending) - sigtimedwait (&set, nullptr, &zero_timeout); + { +#ifdef HAVE_SIGTIMEDWAIT + const timespec zero_timeout = {}; + + sigtimedwait (&set, nullptr, &zero_timeout); +#else + sigset_t pending; + + sigpending (&pending); + if (sigismember (&pending, Sig)) + sigwait (&set, nullptr); +#endif + } sigprocmask (SIG_UNBLOCK, &set, nullptr); } |