To: vim_dev@googlegroups.com
Subject: Patch 7.3.499
Fcc: outbox
From: Bram Moolenaar <Bram@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@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 ///