diff options
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/process.c b/src/process.c index bdf16b7dbd2..f2f33a9eafc 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -4888,15 +4888,20 @@ wait_reading_process_output (int time_limit, int microsecs, int read_kbd, | |||
| 4888 | It can't hurt. */ | 4888 | It can't hurt. */ |
| 4889 | else if (nread == -1 && errno == EIO) | 4889 | else if (nread == -1 && errno == EIO) |
| 4890 | { | 4890 | { |
| 4891 | /* Clear the descriptor now, so we only raise the signal once. */ | 4891 | /* Don't do anything if only a pty, with no associated |
| 4892 | FD_CLR (channel, &input_wait_mask); | 4892 | process (bug#10933). */ |
| 4893 | FD_CLR (channel, &non_keyboard_wait_mask); | 4893 | if (XPROCESS (proc)->pid != -2) { |
| 4894 | 4894 | /* Clear the descriptor now, so we only raise the signal | |
| 4895 | kill (getpid (), SIGCHLD); | 4895 | once. */ |
| 4896 | FD_CLR (channel, &input_wait_mask); | ||
| 4897 | FD_CLR (channel, &non_keyboard_wait_mask); | ||
| 4898 | |||
| 4899 | kill (getpid (), SIGCHLD); | ||
| 4900 | } | ||
| 4896 | } | 4901 | } |
| 4897 | #endif /* HAVE_PTYS */ | 4902 | #endif /* HAVE_PTYS */ |
| 4898 | /* If we can detect process termination, don't consider the process | 4903 | /* If we can detect process termination, don't consider the |
| 4899 | gone just because its pipe is closed. */ | 4904 | process gone just because its pipe is closed. */ |
| 4900 | #ifdef SIGCHLD | 4905 | #ifdef SIGCHLD |
| 4901 | else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc)) | 4906 | else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc)) |
| 4902 | ; | 4907 | ; |