]>
Commit | Line | Data |
---|---|---|
c6060300 MT |
1 | To: vim_dev@googlegroups.com |
2 | Subject: Patch 7.3.499 | |
3 | Fcc: outbox | |
4 | From: Bram Moolenaar <Bram@moolenaar.net> | |
5 | Mime-Version: 1.0 | |
6 | Content-Type: text/plain; charset=UTF-8 | |
7 | Content-Transfer-Encoding: 8bit | |
8 | ------------ | |
9 | ||
10 | Patch 7.3.499 | |
11 | Problem: When using any interface language when Vim is waiting for a child | |
12 | process it gets confused by a child process started through the | |
13 | interface. | |
14 | Solution: Always used waitpid() instead of wait(). (Yasuhiro Matsumoto) | |
15 | Files: src/os_unix.c | |
16 | ||
17 | ||
18 | *** ../vim-7.3.498/src/os_unix.c 2012-02-05 22:51:27.000000000 +0100 | |
19 | --- src/os_unix.c 2012-04-20 15:47:17.000000000 +0200 | |
20 | *************** | |
21 | *** 3734,3757 **** | |
22 | ||
23 | while (wait_pid != child) | |
24 | { | |
25 | ! # ifdef _THREAD_SAFE | |
26 | ! /* Ugly hack: when compiled with Python threads are probably | |
27 | ! * used, in which case wait() sometimes hangs for no obvious | |
28 | ! * reason. Use waitpid() instead and loop (like the GUI). */ | |
29 | ! # ifdef __NeXT__ | |
30 | wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0); | |
31 | ! # else | |
32 | wait_pid = waitpid(child, status, WNOHANG); | |
33 | ! # endif | |
34 | if (wait_pid == 0) | |
35 | { | |
36 | /* Wait for 1/100 sec before trying again. */ | |
37 | mch_delay(10L, TRUE); | |
38 | continue; | |
39 | } | |
40 | - # else | |
41 | - wait_pid = wait(status); | |
42 | - # endif | |
43 | if (wait_pid <= 0 | |
44 | # ifdef ECHILD | |
45 | && errno == ECHILD | |
46 | --- 3734,3754 ---- | |
47 | ||
48 | while (wait_pid != child) | |
49 | { | |
50 | ! /* When compiled with Python threads are probably used, in which case | |
51 | ! * wait() sometimes hangs for no obvious reason. Use waitpid() | |
52 | ! * instead and loop (like the GUI). Also needed for other interfaces, | |
53 | ! * they might call system(). */ | |
54 | ! # ifdef __NeXT__ | |
55 | wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0); | |
56 | ! # else | |
57 | wait_pid = waitpid(child, status, WNOHANG); | |
58 | ! # endif | |
59 | if (wait_pid == 0) | |
60 | { | |
61 | /* Wait for 1/100 sec before trying again. */ | |
62 | mch_delay(10L, TRUE); | |
63 | continue; | |
64 | } | |
65 | if (wait_pid <= 0 | |
66 | # ifdef ECHILD | |
67 | && errno == ECHILD | |
68 | *** ../vim-7.3.498/src/version.c 2012-04-20 13:46:02.000000000 +0200 | |
69 | --- src/version.c 2012-04-20 15:54:05.000000000 +0200 | |
70 | *************** | |
71 | *** 716,717 **** | |
72 | --- 716,719 ---- | |
73 | { /* Add new patch number below this line */ | |
74 | + /**/ | |
75 | + 499, | |
76 | /**/ | |
77 | ||
78 | -- | |
79 | It's not hard to meet expenses, they're everywhere. | |
80 | ||
81 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | |
82 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | |
83 | \\\ an exciting new programming language -- http://www.Zimbu.org /// | |
84 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |