diff --git a/src/os_unix.c b/src/os_unix.c
index 58a27da..f8cf691 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -397,7 +397,7 @@
 
     if (wtime >= 0)
     {
-	while (WaitForChar(wtime) == 0)		/* no character available */
+	while (!WaitForChar(wtime))		/* no character available */
 	{
 	    if (do_resize)
 		handle_resize();
@@ -420,7 +420,7 @@
 	 * flush all the swap files to disk.
 	 * Also done when interrupted by SIGWINCH.
 	 */
-	if (WaitForChar(p_ut) == 0)
+	if (!WaitForChar(p_ut))
 	{
 #ifdef FEAT_AUTOCMD
 	    if (trigger_cursorhold() && maxlen >= 3
@@ -448,7 +448,7 @@
 	 * We want to be interrupted by the winch signal
 	 * or by an event on the monitored file descriptors.
 	 */
-	if (WaitForChar(-1L) == 0)
+	if (!WaitForChar(-1L))
 	{
 	    if (do_resize)	    /* interrupted by SIGWINCH signal */
 		handle_resize();
@@ -482,7 +482,7 @@
 }
 
 /*
- * return non-zero if a character is available
+ * Return non-zero if a character is available.
  */
     int
 mch_char_avail(void)
@@ -5210,7 +5210,7 @@
 	/* See above for type of argv. */
 	execvp(argv[0], argv);
 
-	perror("executing job failed");
+	// perror("executing job failed");
 	_exit(EXEC_FAILED);	    /* exec failed, return failure code */
     }
 
@@ -5359,6 +5359,7 @@
  * "msec" == -1 will block forever.
  * Invokes timer callbacks when needed.
  * When a GUI is being used, this will never get called -- webb
+ * Returns TRUE when a character is available.
  */
     static int
 WaitForChar(long msec)
@@ -5367,6 +5368,7 @@
     long    due_time;
     long    remaining = msec;
     int	    break_loop = FALSE;
+    int	    tb_change_cnt = typebuf.tb_change_cnt;
 
     /* When waiting very briefly don't trigger timers. */
     if (msec >= 0 && msec < 10L)
@@ -5377,6 +5379,11 @@
 	/* Trigger timers and then get the time in msec until the next one is
 	 * due.  Wait up to that time. */
 	due_time = check_due_timer();
+	if (typebuf.tb_change_cnt != tb_change_cnt)
+	{
+	    /* timer may have used feedkeys() */
+	    return FALSE;
+	}
 	if (due_time <= 0 || (msec > 0 && due_time > remaining))
 	    due_time = remaining;
 	if (WaitForCharOrMouse(due_time, &break_loop))
