diff options
author | Troels Nielsen <bn.troels@gmail.com> | 2012-03-23 08:23:14 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2012-03-23 08:23:14 -0400 |
commit | 5063c0e1a29078fb72ef5e48e1eeed6a863128ac (patch) | |
tree | 6895409e31f91197c4ef98bfef09fa4e30694a76 | |
parent | 005a89ffd3550983ca3c85334d79c7fad633c9c0 (diff) | |
download | emacs-5063c0e1a29078fb72ef5e48e1eeed6a863128ac.tar.gz |
* src/process.c (wait_reading_process_output): Handle pty disconnect
by refraining from sending oneself a SIGCHLD.
Fixes: debbugs:10933
-rw-r--r-- | src/ChangeLog | 11 | ||||
-rw-r--r-- | src/process.c | 19 |
2 files changed, 20 insertions, 10 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index e3407a45514..40186c65496 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,8 +1,13 @@ +2012-03-23 Troels Nielsen <bn.troels@gmail.com> (tiny change) + + * process.c (wait_reading_process_output): Handle pty disconnect + by refraining from sending oneself a SIGCHLD (bug#10933). + 2012-03-22 Chong Yidong <cyd@gnu.org> * dispextern.h (struct it): New member string_from_prefix_prop_p. - * xdisp.c (push_prefix_prop): Renamed from push_display_prop. + * xdisp.c (push_prefix_prop): Rename from push_display_prop. Mark string as coming from a prefix property. (handle_face_prop): Use default face for prefix strings (Bug#4281). (pop_it, reseat_1): Save and restore string_from_prefix_prop_p. @@ -14,8 +19,8 @@ 2012-03-20 Eli Zaretskii <eliz@gnu.org> * w32proc.c (Fw32_set_console_codepage) - (Fw32_set_console_output_codepage, Fw32_get_codepage_charset): Doc - fixes. + (Fw32_set_console_output_codepage, Fw32_get_codepage_charset): + Doc fixes. 2012-03-20 Chong Yidong <cyd@gnu.org> 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, It can't hurt. */ else if (nread == -1 && errno == EIO) { - /* Clear the descriptor now, so we only raise the signal once. */ - FD_CLR (channel, &input_wait_mask); - FD_CLR (channel, &non_keyboard_wait_mask); - - kill (getpid (), SIGCHLD); + /* Don't do anything if only a pty, with no associated + process (bug#10933). */ + if (XPROCESS (proc)->pid != -2) { + /* Clear the descriptor now, so we only raise the signal + once. */ + FD_CLR (channel, &input_wait_mask); + FD_CLR (channel, &non_keyboard_wait_mask); + + kill (getpid (), SIGCHLD); + } } #endif /* HAVE_PTYS */ - /* If we can detect process termination, don't consider the process - gone just because its pipe is closed. */ + /* If we can detect process termination, don't consider the + process gone just because its pipe is closed. */ #ifdef SIGCHLD else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc)) ; |