From 5cbaf5903be8b2a529dabc02d0d63e2864d9d127 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Tue, 17 May 2016 22:12:28 +0200
Subject: [PATCH] tweaks: rearrange some key reading stuff in a clearer way

---
 src/winio.c | 46 ++++++++++++++++++++++------------------------
 1 file changed, 22 insertions(+), 24 deletions(-)

diff --git a/src/winio.c b/src/winio.c
index 1c53eac1..4673d0a0 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -110,7 +110,7 @@ static sig_atomic_t sigwinch_counter_save = 0;
 void get_key_buffer(WINDOW *win)
 {
     int input;
-    size_t errcount;
+    size_t errcount = 0;
 
     /* If the keystroke buffer isn't empty, get out. */
     if (key_buffer != NULL)
@@ -121,31 +121,29 @@ void get_key_buffer(WINDOW *win)
     doupdate();
 
     /* Read in the first character using whatever mode we're in. */
-    errcount = 0;
-    if (nodelay_mode) {
-	if ((input = wgetch(win)) == ERR)
-	    return;
-    } else {
-	while ((input = wgetch(win)) == ERR) {
-#ifndef NANO_TINY
-	    /* Did we get SIGWINCH since we were last here? */
-	    if (sigwinch_counter != sigwinch_counter_save) {
-		sigwinch_counter_save = sigwinch_counter;
-		regenerate_screen();
-		input = KEY_WINCH;
-		break;
-	    } else
-#endif
-	    errcount++;
+    input = wgetch(win);
 
-	    /* If we've failed to get a character MAX_BUF_SIZE times in a
-	     * row, assume that the input source we were using is gone and
-	     * die gracefully.  We could check if errno is set to EIO
-	     * ("Input/output error") and die gracefully in that case, but
-	     * it's not always set properly.  Argh. */
-	    if (errcount == MAX_BUF_SIZE)
-		handle_hupterm(0);
+    if (input == ERR && nodelay_mode)
+	return;
+
+    while (input == ERR) {
+	/* If we've failed to get a character MAX_BUF_SIZE times in a row,
+	 * assume our input source is gone and die gracefully.  We could
+	 * check if errno is set to EIO ("Input/output error") and die in
+	 * that case, but it's not always set properly.  Argh. */
+	if (++errcount == MAX_BUF_SIZE)
+	    handle_hupterm(0);
+
+#ifndef NANO_TINY
+	/* Did we get a SIGWINCH since we were last here? */
+	if (sigwinch_counter != sigwinch_counter_save) {
+	    sigwinch_counter_save = sigwinch_counter;
+	    regenerate_screen();
+	    input = KEY_WINCH;
+	    break;
 	}
+#endif
+	input = wgetch(win);
     }
 
     /* Increment the length of the keystroke buffer, and save the value
-- 
GitLab