@@ -751,14 +751,10 @@ sig_send (_pinfo *p, siginfo_t& si, _cygtls *tls)
751751 res = WriteFile (sendsig, leader, packsize, &nb, NULL );
752752 if (!res || packsize == nb)
753753 break ;
754- if (cygwait (NULL , 10 , cw_sig_eintr) == WAIT_SIGNALED
755- && pack.si .si_signo != __SIGFLUSHFAST)
754+ if (cygwait (NULL , 10 , cw_sig_eintr) == WAIT_SIGNALED)
756755 _my_tls.call_signal_handler ();
757756 res = 0 ;
758757 }
759- /* Re-assert signal_arrived which has been cleared in cygwait(). */
760- if (_my_tls.sig )
761- _my_tls.set_signal_arrived ();
762758
763759 if (!res)
764760 {
@@ -789,16 +785,7 @@ sig_send (_pinfo *p, siginfo_t& si, _cygtls *tls)
789785 if (wait_for_completion)
790786 {
791787 sigproc_printf (" Waiting for pack.wakeup %p" , pack.wakeup );
792- do
793- {
794- rc = cygwait (pack.wakeup , WSSC, cw_sig_eintr);
795- if (rc == WAIT_SIGNALED && pack.si .si_signo != __SIGFLUSHFAST)
796- _my_tls.call_signal_handler ();
797- }
798- while (rc != WAIT_OBJECT_0 && rc != WAIT_TIMEOUT);
799- /* Re-assert signal_arrived which has been cleared in cygwait(). */
800- if (_my_tls.sig )
801- _my_tls.set_signal_arrived ();
788+ rc = cygwait (pack.wakeup , WSSC);
802789 ForceCloseHandle (pack.wakeup );
803790 }
804791 else
@@ -819,6 +806,9 @@ sig_send (_pinfo *p, siginfo_t& si, _cygtls *tls)
819806 rc = -1 ;
820807 }
821808
809+ if (wait_for_completion && si.si_signo != __SIGFLUSHFAST)
810+ _my_tls.call_signal_handler ();
811+
822812out:
823813 if (communing && rc)
824814 {
0 commit comments