]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/process.c (wait_reading_process_output): Handle pty disconnect
authorTroels Nielsen <bn.troels@gmail.com>
Fri, 23 Mar 2012 12:23:14 +0000 (08:23 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 23 Mar 2012 12:23:14 +0000 (08:23 -0400)
by refraining from sending oneself a SIGCHLD.

Fixes: debbugs:10933
src/ChangeLog
src/process.c

index e3407a45514e318b8ea4b515c752bf8c19c22de5..40186c6549665c6f67eeb693deb8d092ecedce9a 100644 (file)
@@ -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>
 
index bdf16b7dbd25a1399aad4579613ee06155e190f0..f2f33a9eafcfe45395372fd4f10a8a806d3c5a03 100644 (file)
@@ -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))
                ;