]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.499 v7.3.499
authorBram Moolenaar <Bram@vim.org>
Fri, 20 Apr 2012 13:55:16 +0000 (15:55 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 20 Apr 2012 13:55:16 +0000 (15:55 +0200)
Problem:    When using any interface language when Vim is waiting for a child
            process it gets confused by a child process started through the
            interface.
Solution:   Always used waitpid() instead of wait(). (Yasuhiro Matsumoto)

src/os_unix.c
src/version.c

index 043d0a8002bd80eed5b8e45d043bcfc72303e2b7..860fbcc409fdf98e784525e23dd4aff2d76656e7 100644 (file)
@@ -3734,24 +3734,21 @@ wait4pid(child, status)
 
     while (wait_pid != child)
     {
-# ifdef _THREAD_SAFE
-       /* Ugly hack: when compiled with Python threads are probably
-        * used, in which case wait() sometimes hangs for no obvious
-        * reason.  Use waitpid() instead and loop (like the GUI). */
-#  ifdef __NeXT__
+       /* When compiled with Python threads are probably used, in which case
+        * wait() sometimes hangs for no obvious reason.  Use waitpid()
+        * instead and loop (like the GUI). Also needed for other interfaces,
+        * they might call system(). */
+# ifdef __NeXT__
        wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0);
-#  else
+# else
        wait_pid = waitpid(child, status, WNOHANG);
-#  endif
+# endif
        if (wait_pid == 0)
        {
            /* Wait for 1/100 sec before trying again. */
            mch_delay(10L, TRUE);
            continue;
        }
-# else
-       wait_pid = wait(status);
-# endif
        if (wait_pid <= 0
 # ifdef ECHILD
                && errno == ECHILD
index ed92464a4fcb34dbc4b64fc318373046b3ccee67..df3717ab968b56a3cef2b2ec3b9c05a0cd28998d 100644 (file)
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    499,
 /**/
     498,
 /**/