[vim/f17] - patchlevel 499

Karsten Hopp karsten at fedoraproject.org
Tue May 8 14:59:52 UTC 2012


commit c8148400460d470e5e5daca4240bddc92a76f99e
Author: Karsten Hopp <karsten at redhat.com>
Date:   Tue May 8 16:57:18 2012 +0200

    - patchlevel 499

 7.3.499 |   84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 84 insertions(+), 0 deletions(-)
---
diff --git a/7.3.499 b/7.3.499
new file mode 100644
index 0000000..4e45e4f
--- /dev/null
+++ b/7.3.499
@@ -0,0 +1,84 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.499
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.499
+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)
+Files:      src/os_unix.c
+
+
+*** ../vim-7.3.498/src/os_unix.c	2012-02-05 22:51:27.000000000 +0100
+--- src/os_unix.c	2012-04-20 15:47:17.000000000 +0200
+***************
+*** 3734,3757 ****
+  
+      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__
+  	wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0);
+! #  else
+  	wait_pid = waitpid(child, status, WNOHANG);
+! #  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
+--- 3734,3754 ----
+  
+      while (wait_pid != child)
+      {
+! 	/* 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
+  	wait_pid = waitpid(child, status, WNOHANG);
+! # endif
+  	if (wait_pid == 0)
+  	{
+  	    /* Wait for 1/100 sec before trying again. */
+  	    mch_delay(10L, TRUE);
+  	    continue;
+  	}
+  	if (wait_pid <= 0
+  # ifdef ECHILD
+  		&& errno == ECHILD
+*** ../vim-7.3.498/src/version.c	2012-04-20 13:46:02.000000000 +0200
+--- src/version.c	2012-04-20 15:54:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     499,
+  /**/
+
+-- 
+It's not hard to meet expenses, they're everywhere.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


More information about the scm-commits mailing list