updated for version 7.4b.022
Problem:    Not waiting for a character when the tick count overflows.
Solution:   Subtract the unsigned numbers and cast to int. (Ken Takata)
diff --git a/src/os_win32.c b/src/os_win32.c
index 48cc4c5..4013353 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -1357,9 +1357,10 @@
 
 	if (msec > 0)
 	{
-	    /* If the specified wait time has passed, return. */
+	    /* If the specified wait time has passed, return.  Beware that
+	     * GetTickCount() may wrap around (overflow). */
 	    dwNow = GetTickCount();
-	    if (dwNow >= dwEndTime)
+	    if ((int)(dwNow - dwEndTime) >= 0)
 		break;
 	}
 	if (msec != 0)