changeset 8112:a62ff5ff60c1 v7.4.1350

commit https://github.com/vim/vim/commit/ec70bdd68a531762a62728747ab529d7a6dfc842 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Feb 18 22:17:42 2016 +0100 patch 7.4.1350 Problem: When the test server fails to start Vim hangs. Solution: Check that there is actually something to read from the tty fd.
author Christian Brabandt <cb@256bit.org>
date Thu, 18 Feb 2016 22:30:07 +0100
parents b741d3837a9e
children fd690d084aaf
files src/os_unix.c src/version.c
diffstat 2 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -5345,11 +5345,12 @@ WaitForChar(long msec)
 #if defined(__BEOS__)
     int
 #else
-    static  int
+    static int
 #endif
 RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED)
 {
     int		ret;
+    int		result;
 #if defined(FEAT_XCLIPBOARD) || defined(USE_XSMP) || defined(FEAT_MZSCHEME)
     static int	busy = FALSE;
 
@@ -5466,6 +5467,9 @@ RealWaitForChar(int fd, long msec, int *
 #endif
 
 	ret = poll(fds, nfd, towait);
+
+	result = ret > 0 && (fds[0].revents & POLLIN);
+
 # ifdef FEAT_MZSCHEME
 	if (ret == 0 && mzquantum_used)
 	    /* MzThreads scheduling is required and timeout occurred */
@@ -5613,6 +5617,10 @@ select_eintr:
 # endif
 
 	ret = select(maxfd + 1, &rfds, NULL, &efds, tvp);
+	result = ret > 0 && FD_ISSET(fd, &rfds);
+	if (result)
+	    --ret;
+
 # ifdef EINTR
 	if (ret == -1 && errno == EINTR)
 	{
@@ -5733,7 +5741,7 @@ select_eintr:
 #endif
     }
 
-    return (ret > 0);
+    return result;
 }
 
 #ifndef NO_EXPANDPATH
--- a/src/version.c
+++ b/src/version.c
@@ -748,6 +748,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1350,
+/**/
     1349,
 /**/
     1348,