diff options
| author | Steven Fackler <sfackler@gmail.com> | 2014-12-14 23:36:50 -0800 |
|---|---|---|
| committer | Steven Fackler <sfackler@gmail.com> | 2014-12-14 23:36:50 -0800 |
| commit | 8d6895a9c097a90bb00459eccacb6ba06c6437f9 (patch) | |
| tree | 1d3c1b3aed2d0c439278bde7e402844089f109c3 /src/libstd/io | |
| parent | 126db549b038c84269a1e4fe46f051b2c15d6970 (diff) | |
| download | rust-8d6895a9c097a90bb00459eccacb6ba06c6437f9.tar.gz rust-8d6895a9c097a90bb00459eccacb6ba06c6437f9.zip | |
Free stdin on exit
Diffstat (limited to 'src/libstd/io')
| -rw-r--r-- | src/libstd/io/stdio.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libstd/io/stdio.rs b/src/libstd/io/stdio.rs index 344012a09a0..548dfdd6273 100644 --- a/src/libstd/io/stdio.rs +++ b/src/libstd/io/stdio.rs @@ -41,6 +41,7 @@ use option::Option; use option::Option::{Some, None}; use ops::{Deref, DerefMut, FnOnce}; use result::Result::{Ok, Err}; +use rt; use rustrt; use rustrt::local::Local; use rustrt::task::Task; @@ -224,6 +225,12 @@ pub fn stdin() -> StdinReader { inner: Arc::new(Mutex::new(stdin)) }; STDIN = mem::transmute(box stdin); + + // Make sure to free it at exit + rt::at_exit(|| { + mem::transmute::<_, Box<StdinReader>>(STDIN); + STDIN = 0 as *const _; + }); }); (*STDIN).clone() |
