Cygwin: FIFO: hit_eof: add a call to fifo_client_lock

The second check of nconnected needs to be protected by a lock as well
as the first.
This commit is contained in:
Ken Brown 2019-04-14 19:15:56 +00:00 committed by Corinna Vinschen
parent b63843ed56
commit 5281699926
1 changed files with 13 additions and 8 deletions

View File

@ -705,15 +705,20 @@ fhandler_fifo::raw_write (const void *ptr, size_t len)
bool
fhandler_fifo::hit_eof ()
{
fifo_client_lock ();
bool eof = (nconnected == 0);
fifo_client_unlock ();
if (eof)
{
/* Give the listen_client thread time to catch up, then recheck. */
Sleep (1);
bool eof;
bool retry = true;
retry:
fifo_client_lock ();
eof = (nconnected == 0);
}
fifo_client_unlock ();
if (eof && retry)
{
retry = false;
/* Give the listen_client thread time to catch up. */
Sleep (1);
goto retry;
}
return eof;
}