about summary refs log tree commit diff
path: root/src/libnative
diff options
context:
space:
mode:
authorIvan Petkov <ivanppetkov@gmail.com>2014-08-10 14:10:34 -0700
committerIvan Petkov <ivanppetkov@gmail.com>2014-08-12 19:09:18 -0700
commit3fe0ba9afc7504ec01a778d8d72bd0b72fd013e1 (patch)
tree6c4d6f3d3df5f2871f516469fdd3bce045d5c2e4 /src/libnative
parent51c7e20d539eaed6e765612a02fbf2865e08a1bc (diff)
downloadrust-3fe0ba9afc7504ec01a778d8d72bd0b72fd013e1.tar.gz
rust-3fe0ba9afc7504ec01a778d8d72bd0b72fd013e1.zip
libnative: process spawning should not close inherited file descriptors
* The caller should be responsible for cleaning up file descriptors
* If a caller safely creates a file descriptor (via
  native::io::file::open) the returned structure (FileDesc) will try to
  clean up the file, failing in the process and writing error messages
  to the screen.
* This should not happen as the caller has no public interface for
  telling the FileDesc structure to NOT free the underlying fd.
* Alternatively, if another file is opened under the same fd held by
  the FileDesc structure returned by native::io::file::open, it will
  close the wrong file upon destruction.
Diffstat (limited to 'src/libnative')
-rw-r--r--src/libnative/io/process.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libnative/io/process.rs b/src/libnative/io/process.rs
index 77822bbbc20..4b832a4a97e 100644
--- a/src/libnative/io/process.rs
+++ b/src/libnative/io/process.rs
@@ -80,7 +80,7 @@ impl Process {
                 rtio::Ignored => { ret.push(None); Ok(None) }
                 rtio::InheritFd(fd) => {
                     ret.push(None);
-                    Ok(Some(file::FileDesc::new(fd, true)))
+                    Ok(Some(file::FileDesc::new(fd, false)))
                 }
                 rtio::CreatePipe(readable, _writable) => {
                     let (reader, writer) = try!(pipe());