Eric Blake wrote:
> Your review hopefully made it even better.
Thanks for addressing all the issues. And thanks for noticing the
missing reloading of the handler in blocking_handler.
> OK, the version of the patch posted below should be safer in the presence of
> async signals (it will never be perfect, due to mingw's inherent data race
> caused by the temporary uninstallation of a handler, as well as its inability
> to atomically block signals).
Yes, I don't see workarounds for these two problems either,
An additional commit:
In lib/nanosleep.c there is no need to set up the newact variable in the
case when it is not used.
2008-06-22 Bruno Haible <[EMAIL PROTECTED]>
* lib/nanosleep.c (rpl_nanosleep): Setup newact only when it is needed.
*** lib/nanosleep.c.orig 2008-06-22 21:32:31.000000000 +0200
--- lib/nanosleep.c 2008-06-22 21:32:24.000000000 +0200
***************
*** 147,160 ****
/* set up sig handler */
if (! initialized)
{
! struct sigaction oldact, newact;
! newact.sa_handler = sighandler;
! sigemptyset (&newact.sa_mask);
! newact.sa_flags = 0;
sigaction (SIGCONT, NULL, &oldact);
if (get_handler (&oldact) != SIG_IGN)
! sigaction (SIGCONT, &newact, NULL);
initialized = true;
}
--- 147,164 ----
/* set up sig handler */
if (! initialized)
{
! struct sigaction oldact;
sigaction (SIGCONT, NULL, &oldact);
if (get_handler (&oldact) != SIG_IGN)
! {
! struct sigaction newact;
!
! newact.sa_handler = sighandler;
! sigemptyset (&newact.sa_mask);
! newact.sa_flags = 0;
! sigaction (SIGCONT, &newact, NULL);
! }
initialized = true;
}