aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2013-02-15 21:37:29 +0200
committerEli Zaretskii2013-02-15 21:37:29 +0200
commitb2af991a2ff353b27fd6f72785e0081a742fd88a (patch)
tree6753dddf86a8424c10d7ce847ee811ecdeca87af /src
parente454145b0985d28ef5581be5c469726e68762322 (diff)
downloademacs-b2af991a2ff353b27fd6f72785e0081a742fd88a.tar.gz
emacs-b2af991a2ff353b27fd6f72785e0081a742fd88a.zip
Remove unneeded bits of commit 2013-02-15T09:41:31Z!eliz@gnu.org merged from release branch.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog11
-rw-r--r--src/w32proc.c18
2 files changed, 2 insertions, 27 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 82751e371df..6ff25edac50 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -8,16 +8,7 @@
8 when auto-save-timeout is less than 4. (Bug#13720) 8 when auto-save-timeout is less than 4. (Bug#13720)
9 9
10 * w32proc.c (new_child): Free up to 2 slots of dead processes at a 10 * w32proc.c (new_child): Free up to 2 slots of dead processes at a
11 time. Improve diagnostics in DebPrint. 11 time. Improve diagnostics in DebPrint. (Bug#13546)
12 (reader_thread): If cp->char_avail is NULL, set the FILE_AT_EOF
13 flag, so that sys_select could have a chance of noticing that this
14 process is dead, and call a SIGCHLD handler for it. Improve
15 diagnostics in DebPrint.
16 (reap_subprocess): Reset the FILE_AT_EOF flag set by
17 reader_thread.
18 (sys_select): Watch a process whose procinfo.hProcess is non-NULL
19 even if its char_avail is NULL. Allows to reap subprocesses that
20 were forcibly deleted by delete-process. (Bug#13546)
21 12
22 * w32.c (sys_socket, sys_bind, sys_connect, sys_gethostname) 13 * w32.c (sys_socket, sys_bind, sys_connect, sys_gethostname)
23 (sys_gethostbyname, sys_getservbyname, sys_getpeername) 14 (sys_gethostbyname, sys_getservbyname, sys_getpeername)
diff --git a/src/w32proc.c b/src/w32proc.c
index 8226564c88f..3f3e97c77a0 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -1017,17 +1017,6 @@ reader_thread (void *arg)
1017 if (cp->status == STATUS_READ_ERROR || !cp->char_avail) 1017 if (cp->status == STATUS_READ_ERROR || !cp->char_avail)
1018 break; 1018 break;
1019 1019
1020 if (!CHILD_ACTIVE (cp) && cp->procinfo.hProcess && cp->fd >= 0)
1021 {
1022 /* Somebody already called delete_child on this child, since
1023 only delete_child zeroes out cp->char_avail. This means
1024 no one will read from cp->fd and will not set the
1025 FILE_AT_EOF flag, therefore preventing sys_select from
1026 noticing that the process died. Set the flag here
1027 instead. */
1028 fd_info[cp->fd].flags |= FILE_AT_EOF;
1029 }
1030
1031 /* The name char_avail is a misnomer - it really just means the 1020 /* The name char_avail is a misnomer - it really just means the
1032 read-ahead has completed, whether successfully or not. */ 1021 read-ahead has completed, whether successfully or not. */
1033 if (!SetEvent (cp->char_avail)) 1022 if (!SetEvent (cp->char_avail))
@@ -1237,11 +1226,6 @@ reap_subprocess (child_process *cp)
1237 sys_read when the subprocess output is fully read. */ 1226 sys_read when the subprocess output is fully read. */
1238 if (cp->fd < 0) 1227 if (cp->fd < 0)
1239 delete_child (cp); 1228 delete_child (cp);
1240 else
1241 {
1242 /* Reset the flag set by reader_thread. */
1243 fd_info[cp->fd].flags &= ~FILE_AT_EOF;
1244 }
1245} 1229}
1246 1230
1247/* Wait for a child process specified by PID, or for any of our 1231/* Wait for a child process specified by PID, or for any of our
@@ -2067,7 +2051,7 @@ count_children:
2067 /* Some child_procs might be sockets; ignore them. Also some 2051 /* Some child_procs might be sockets; ignore them. Also some
2068 children may have died already, but we haven't finished reading 2052 children may have died already, but we haven't finished reading
2069 the process output; ignore them too. */ 2053 the process output; ignore them too. */
2070 if ((CHILD_ACTIVE (cp) || cp->procinfo.hProcess) 2054 if ((CHILD_ACTIVE (cp) && cp->procinfo.hProcess)
2071 && (cp->fd < 0 2055 && (cp->fd < 0
2072 || (fd_info[cp->fd].flags & FILE_SEND_SIGCHLD) == 0 2056 || (fd_info[cp->fd].flags & FILE_SEND_SIGCHLD) == 0
2073 || (fd_info[cp->fd].flags & FILE_AT_EOF) != 0) 2057 || (fd_info[cp->fd].flags & FILE_AT_EOF) != 0)