diff --git a/src/modules/files/file.c b/src/modules/files/file.c
index b67696c0ade73ea6a775a7f5e78482c912577cd8..e410e43126ce734d25810af66c8c765cfd3795c0 100644
--- a/src/modules/files/file.c
+++ b/src/modules/files/file.c
@@ -5,7 +5,7 @@
 \*/
 
 #include "global.h"
-RCSID("$Id: file.c,v 1.110 1998/07/12 21:18:35 grubba Exp $");
+RCSID("$Id: file.c,v 1.111 1998/07/15 14:44:19 grubba Exp $");
 #include "fdlib.h"
 #include "interpret.h"
 #include "svalue.h"
@@ -1502,8 +1502,16 @@ static void file_pipe(INT32 args)
     error("Cannot create a pipe matching those parameters.\n");
   }while(0);
     
-  if(i<0)
+  if ((i<0) || (inout[0] < 0) || (inout[1] < 0))
   {
+    if (i >= 0) {
+      if (inout[0] >= 0) {
+	close(inout[0]);
+      }
+      if (inout[1] >= 0) {
+	close(inout[1]);
+      }
+    }
     ERRNO=errno;
     push_int(0);
   }