Revision
2897
Author
lsansonetti@apple.com
Date
2009-10-24 21:23:32 -0700 (Sat, 24 Oct 2009)

Log Message

fixing a bug in IO.popen

Modified Paths

Diff

Modified: MacRuby/trunk/io.c (2896 => 2897)


--- MacRuby/trunk/io.c	2009-10-25 03:22:59 UTC (rev 2896)
+++ MacRuby/trunk/io.c	2009-10-25 04:23:32 UTC (rev 2897)
@@ -2075,19 +2075,19 @@
     io_struct->pid = pid;
     io_struct->mode = mode;
 
-    // Confusingly enough, FMODE_WRITABLE means 'write-only'
-    // and FMODE_READABLE means 'read-only'.
     const int fmode = convert_mode_string_to_fmode(mode);
-    if (fmode != FMODE_WRITABLE) {
+    if (fmode & FMODE_READABLE) {
 	io_struct->read_fd = fd[0];
     }
-    if (fmode != FMODE_READABLE) {
+    else {
+	close(fd[0]);
+    }
+    if (fmode & FMODE_WRITABLE) {
 	io_struct->write_fd = fd[1];
     }
     else {
-	close(fd[1]);	
+	close(fd[1]);
     }
-
     return io;
 }