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