diff options
author | June McEnroe <june@causal.agency> | 2018-12-31 22:38:34 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2018-12-31 22:38:34 -0500 |
commit | ae39d0abf365e2e25dc56a45cc1d7ba0af0df67d (patch) | |
tree | ae67f726a10a85f21f0a8df041ee69fc1becfd8a | |
parent | Replace control chars with blanks in name (diff) | |
download | play-ae39d0abf365e2e25dc56a45cc1d7ba0af0df67d.tar.gz play-ae39d0abf365e2e25dc56a45cc1d7ba0af0df67d.zip |
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.
-rw-r--r-- | 2048.c | 1 | ||||
-rw-r--r-- | play.c | 3 |
2 files changed, 3 insertions, 1 deletions
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(); |