Fix Windows client for EOF on stdin

stdin_read_thread() went into a tight loop on EOF.  Observed with
Wine.  Broken in commit f082ef9f, v4.3.11.
This commit is contained in:
Markus Armbruster 2009-04-11 17:56:21 +02:00
parent 041066ab76
commit e3cee85f7c

View file

@ -136,21 +136,15 @@ static DWORD WINAPI
stdin_read_thread(LPVOID lpParam)
{
for (;;) {
if (WaitForSingleObject(bounce_empty, INFINITE) != WAIT_OBJECT_0)
break;
bounce_status = _read(0, bounce_buf, sizeof(bounce_buf));
bounce_error = errno;
if (bounce_status == 0) {
if (_isatty(0)) {
SetEvent(bounce_empty);
continue;
} else
break;
if (WaitForSingleObject(bounce_empty, INFINITE) != WAIT_OBJECT_0) {
bounce_status = 0;
bounce_error = GetLastError();
} else {
bounce_status = _read(0, bounce_buf, sizeof(bounce_buf));
bounce_error = errno;
}
SetEvent(bounce_full);
}
SetEvent(bounce_full);
return 0;
}
/*