From 8d6895a9c097a90bb00459eccacb6ba06c6437f9 Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Sun, 14 Dec 2014 23:36:50 -0800 Subject: Free stdin on exit --- src/libstd/io/stdio.rs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/libstd') 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>(STDIN); + STDIN = 0 as *const _; + }); }); (*STDIN).clone() -- cgit 1.4.1-3-g733a5