diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2014-12-17 08:34:44 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-12-17 11:50:27 -0800 |
| commit | 64faa74d08aa89fa3c4f46da386d4aa453fc0819 (patch) | |
| tree | 29ca178c8075f9fb18123b4227c23f78b24eab50 /src/libstd/io | |
| parent | 03e970f043e3482a21936d26ea4b6bc504d845b1 (diff) | |
| parent | 8d6895a9c097a90bb00459eccacb6ba06c6437f9 (diff) | |
| download | rust-64faa74d08aa89fa3c4f46da386d4aa453fc0819.tar.gz rust-64faa74d08aa89fa3c4f46da386d4aa453fc0819.zip | |
rollup merge of #19869: sfackler/free-stdin
r? @aturon
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 c180476efb8..844814fbfdd 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() |
