diff options
Diffstat (limited to 'source/ap/vim/patches/7.3.499')
-rw-r--r-- | source/ap/vim/patches/7.3.499 | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.499 b/source/ap/vim/patches/7.3.499 new file mode 100644 index 000000000..4e45e4fb7 --- /dev/null +++ b/source/ap/vim/patches/7.3.499 @@ -0,0 +1,84 @@ +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 /// |