From 1112b1ba33e9a5e3c563e081bebe3a12962354ac Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 22 May 2018 20:06:21 +0200 Subject: terminal-unix: stop trying to read when terminal disappears Avoids 100% CPU usage due to terminal code retrying read(). Seems like this was "forgotten" (or there was somehow the assumption poll() would not signal POLLIN anymore). Fixes #5842. --- osdep/terminal-unix.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/osdep/terminal-unix.c b/osdep/terminal-unix.c index 1e909522b7..954c13904f 100644 --- a/osdep/terminal-unix.c +++ b/osdep/terminal-unix.c @@ -395,8 +395,10 @@ static void *terminal_thread(void *ptr) polldev(fds, stdin_ok ? 2 : 1, -1); if (fds[0].revents) break; - if (fds[1].revents) - getch2(input_ctx); + if (fds[1].revents) { + if (!getch2(input_ctx)) + break; + } } char c; bool quit = read(death_pipe[0], &c, 1) == 1 && c == 1; -- cgit v1.2.3