about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorJeremy Soller <jackpot51@gmail.com>2018-08-16 18:47:52 -0600
committerjD91mZM2 <me@krake.one>2018-10-18 16:30:44 +0200
commit8c277d843cbac4d89f5f2dbfdb773cb80f48977b (patch)
tree7a9091f582e41fd2901e1bf4abbd4cb927261d80 /src/libstd
parentb400005861ae54fda63e7bac48010f5782577dd1 (diff)
downloadrust-8c277d843cbac4d89f5f2dbfdb773cb80f48977b.tar.gz
rust-8c277d843cbac4d89f5f2dbfdb773cb80f48977b.zip
Don't forget to close executable file
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/sys/redox/process.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libstd/sys/redox/process.rs b/src/libstd/sys/redox/process.rs
index f85834dff5d..566c3e72922 100644
--- a/src/libstd/sys/redox/process.rs
+++ b/src/libstd/sys/redox/process.rs
@@ -318,7 +318,7 @@ impl Command {
         };
 
         let fd = if let Some(program) = program {
-            t!(cvt(syscall::open(program.as_os_str().as_bytes(), syscall::O_RDONLY)))
+            t!(cvt(syscall::open(program.as_os_str().as_bytes(), syscall::O_RDONLY | syscall::O_CLOEXEC)))
         } else {
             return io::Error::from_raw_os_error(syscall::ENOENT);
         };
@@ -341,6 +341,7 @@ impl Command {
         }
 
         if let Err(err) = syscall::fexec(fd, &args, &vars) {
+            let _ = syscall::close(fd);
             io::Error::from_raw_os_error(err.errno as i32)
         } else {
             panic!("return from exec without err");