]> granicus.if.org Git - vim/commitdiff
patch 7.4.1710 v7.4.1710
authorBram Moolenaar <Bram@vim.org>
Mon, 4 Apr 2016 20:03:08 +0000 (22:03 +0200)
committerBram Moolenaar <Bram@vim.org>
Mon, 4 Apr 2016 20:03:08 +0000 (22:03 +0200)
Problem:    Not all output of an external command is read.
Solution:   Avoid timing out when the process has exited. (closes #681)

src/os_unix.c
src/version.c

index dc8e00952acb1d483de28c58da0d4d7698000647..58a27da050c2398b547984e770b038a3bb13347b 100644 (file)
@@ -4845,6 +4845,7 @@ mch_call_shell(
                            break;
 
 # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
+                       if (wait_pid == 0)
                        {
                            struct timeval  now_tv;
                            long            msec;
@@ -4854,7 +4855,7 @@ mch_call_shell(
                             * break out too often to avoid losing typeahead. */
                            gettimeofday(&now_tv, NULL);
                            msec = (now_tv.tv_sec - start_tv.tv_sec) * 1000L
-                               + (now_tv.tv_usec - start_tv.tv_usec) / 1000L;
+                                + (now_tv.tv_usec - start_tv.tv_usec) / 1000L;
                            if (msec > 2000)
                            {
                                noread_cnt = 5;
@@ -4864,10 +4865,15 @@ mch_call_shell(
 # endif
                    }
 
-                   /* If we already detected the child has finished break the
-                    * loop now. */
+                   /* If we already detected the child has finished, continue
+                    * reading output for a short while.  Some text may be
+                    * buffered. */
                    if (wait_pid == pid)
+                   {
+                       if (noread_cnt < 5)
+                           continue;
                        break;
+                   }
 
                    /*
                     * Check if the child still exists, before checking for
index 18a89e4a23bbc476eb6f85691582db6a65276d3e..571db823d788fd479cb33c6cfc44396f1247bdcb 100644 (file)
@@ -748,6 +748,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1710,
 /**/
     1709,
 /**/