diff --git a/ChangeLog b/ChangeLog
index 3a0d97a4e47301a48aff7bdbfd375fe9d02186ff..c34b7c369ab996f55b62d981a09edccc76a9d96c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -15,6 +15,8 @@ CVS code -
 	  matches inside a line (e.g. replace the "b" in "abc" with
 	  anything). (David Benbennick)
 - winio.c:
+  get_accepted_kbinput()
+	- Don't use "kbinput = wgetch(win)" as a switch value. (DLR)
   do_credits()
 	- Use nanosleep() instead of usleep().  The latter is only
 	  standard under BSD, whereas the former is POSIX compliant.
diff --git a/src/winio.c b/src/winio.c
index 6f6232cb47aaf7fe3a0b468ea1e43456f574dd33..802626be0cf6c446ab05ba85ffbc6f1784b1c540 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -119,7 +119,8 @@ int get_accepted_kbinput(WINDOW *win, int kbinput, int *meta)
 
     switch (kbinput) {
 	case NANO_CONTROL_3: /* Escape */
-	    switch (kbinput = wgetch(win)) {
+	    kbinput = wgetch(win);
+	    switch (kbinput) {
 		case NANO_CONTROL_3: /* Escape */
 		    kbinput = wgetch(win);
 		    /* Esc Esc [three-digit decimal ASCII code from