From e3cee85f7c0dc3621de8b98b9763fb632eae65c5 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 11 Apr 2009 17:56:21 +0200 Subject: [PATCH] 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. --- src/client/play.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/client/play.c b/src/client/play.c index 5d1b63db2..da43e609d 100644 --- a/src/client/play.c +++ b/src/client/play.c @@ -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; } /* -- 2.43.0