diff src/process.c @ 267:966663fcf606 r20-5b32

Import from CVS: tag r20-5b32
author cvs
date Mon, 13 Aug 2007 10:26:29 +0200
parents 727739f917cb
children c5d627a313b1
line wrap: on
line diff
--- a/src/process.c	Mon Aug 13 10:25:39 2007 +0200
+++ b/src/process.c	Mon Aug 13 10:26:29 2007 +0200
@@ -1750,11 +1750,15 @@
 
   if (!MAYBE_INT_PROCMETH (process_send_eof, (proc)))
     {
-      event_stream_delete_stream_pair (Qnil, XPROCESS (proc)->pipe_outstream);
-      XPROCESS (proc)->pipe_outstream = Qnil;
+      if (!NILP (DATA_OUTSTREAM (XPROCESS (proc))))
+	{
+	  Lstream_close (XLSTREAM (DATA_OUTSTREAM (XPROCESS (proc))));
+	  event_stream_delete_stream_pair (Qnil, XPROCESS (proc)->pipe_outstream);
+	  XPROCESS (proc)->pipe_outstream = Qnil;
 #ifdef FILE_CODING
-      XPROCESS (proc)->coding_outstream = Qnil;
+	  XPROCESS (proc)->coding_outstream = Qnil;
 #endif
+	}
     }
 
   return process;
@@ -1781,6 +1785,11 @@
   /* Must call this before setting the streams to nil */
   event_stream_unselect_process (p);
 
+  if (!NILP (DATA_OUTSTREAM (p)))
+    Lstream_close (XLSTREAM (DATA_OUTSTREAM (p)));
+  if (!NILP (DATA_INSTREAM (p)))
+    Lstream_close (XLSTREAM (DATA_INSTREAM (p)));
+
   /* Provide minimal implementation for deactivate_process
      if there's no process-specific one */
   if (HAS_PROCMETH_P (deactivate_process))