From ae39d0abf365e2e25dc56a45cc1d7ba0af0df67d Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Mon, 31 Dec 2018 22:38:34 -0500 Subject: Handle ERR from getch Somehow, play processes were being orphaned without receiving SIGHUP and would consume 100% CPU in this getch loop. I still have no idea what was happening to the SSH sessions to cause orphans like that, but this at least makes them exit. --- 2048.c | 1 + play.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/2048.c b/2048.c index 9b8a3a4..fe17a30 100644 --- a/2048.c +++ b/2048.c @@ -240,6 +240,7 @@ static bool input(void) { break; case 'k': case KEY_UP: if (up()) spawn(); break; case 'l': case KEY_RIGHT: if (right()) spawn(); break; case 'q': return false; + break; case ERR: exit(EXIT_FAILURE); } return true; } diff --git a/play.c b/play.c index 251e826..23011f6 100644 --- a/play.c +++ b/play.c @@ -124,7 +124,7 @@ static void draw(size_t new) { ); mvhline(ScoresY + 1, ScoresX, '=', ScoresWidth); - int newY; + int newY = -1; for (size_t i = 0; i < ScoresTop; ++i) { if (!scores[i].score) break; if (i == new) newY = ScoresY + 2 + i; @@ -175,6 +175,7 @@ int main(void) { fclose(file); } + noecho(); curs_set(0); getch(); endwin(); -- cgit 1.4.1