diff options
author | wm4 <wm4@nowhere> | 2018-05-22 20:06:21 +0200 |
---|---|---|
committer | sfan5 <sfan5@live.de> | 2018-05-25 10:17:06 +0200 |
commit | 3101cb3847355b32c2efbf644f5cb16a2b4feff8 (patch) | |
tree | 8d95d59a1297b030adf2a0142a310fe633f0c0e1 /osdep | |
parent | fea87c4253bd250d01d3624bf90aa6374ebda630 (diff) |
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.
Diffstat (limited to 'osdep')
-rw-r--r-- | osdep/terminal-unix.c | 6 |
1 files 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; |