diff options
| author | Eli Zaretskii | 2013-02-15 21:37:29 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2013-02-15 21:37:29 +0200 |
| commit | b2af991a2ff353b27fd6f72785e0081a742fd88a (patch) | |
| tree | 6753dddf86a8424c10d7ce847ee811ecdeca87af | |
| parent | e454145b0985d28ef5581be5c469726e68762322 (diff) | |
| download | emacs-b2af991a2ff353b27fd6f72785e0081a742fd88a.tar.gz emacs-b2af991a2ff353b27fd6f72785e0081a742fd88a.zip | |
Remove unneeded bits of commit 2013-02-15T09:41:31Z!eliz@gnu.org merged from release branch.
| -rw-r--r-- | src/ChangeLog | 11 | ||||
| -rw-r--r-- | src/w32proc.c | 18 |
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) |