X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fprocess-unix.c;h=f23a9e7197040329178b6c0ff71f0a2dd4545480;hb=975655e6b5b1526ee82b159b3eadf69888c42090;hp=c4f8bbd29fdc78d619fafea53ca654b567685f68;hpb=3e447015251ce6dcde843cbed10d9033d5538622;p=chise%2Fxemacs-chise.git- diff --git a/src/process-unix.c b/src/process-unix.c index c4f8bbd..f23a9e7 100644 --- a/src/process-unix.c +++ b/src/process-unix.c @@ -1139,6 +1139,14 @@ unix_send_process (Lisp_Object proc, struct lstream* lstream) volatile Lisp_Object vol_proc = proc; Lisp_Process *volatile p = XPROCESS (proc); + /* #### JV: layering violation? + + This function knows too much about the relation between the encodingstream + (DATA_OUTSTREAM) and te actual output stream p->output_stream. + + If encoding streams properly forwarded all calls, we could simply + use DATA_OUTSTREAM everywhere. */ + if (!SETJMP (send_process_frame)) { /* use a reasonable-sized buffer (somewhere around the size of the @@ -1173,6 +1181,9 @@ unix_send_process (Lisp_Object proc, struct lstream* lstream) that may allow the program to finish doing output and read more. */ Faccept_process_output (Qnil, make_int (1), Qnil); + /* It could have *really* finished, deleting the process */ + if (NILP(p->pipe_outstream)) + return; old_sigpipe = (SIGTYPE (*) (int)) signal (SIGPIPE, send_process_trap); Lstream_flush (XLSTREAM (p->pipe_outstream)); @@ -1765,7 +1776,7 @@ unix_open_network_stream (Lisp_Object name, Lisp_Object host, Lisp_Object servic #ifdef HAVE_MULTICAST -/* Didier Verna Nov. 28 1997. +/* Didier Verna Nov. 28 1997. This function is similar to open-network-stream-internal, but provides a mean to open an UDP multicast connection instead of a TCP one. Like in the