File tree 2 files changed +20
-0
lines changed
2 files changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -41,6 +41,7 @@ use option::Option;
41
41
use option:: Option :: { Some , None } ;
42
42
use ops:: { Deref , DerefMut , FnOnce } ;
43
43
use result:: Result :: { Ok , Err } ;
44
+ use rt;
44
45
use rustrt;
45
46
use rustrt:: local:: Local ;
46
47
use rustrt:: task:: Task ;
@@ -224,6 +225,12 @@ pub fn stdin() -> StdinReader {
224
225
inner : Arc :: new ( Mutex :: new ( stdin) )
225
226
} ;
226
227
STDIN = mem:: transmute ( box stdin) ;
228
+
229
+ // Make sure to free it at exit
230
+ rt:: at_exit ( || {
231
+ mem:: transmute :: < _ , Box < StdinReader > > ( STDIN ) ;
232
+ STDIN = 0 as * const _ ;
233
+ } ) ;
227
234
} ) ;
228
235
229
236
( * STDIN ) . clone ( )
Original file line number Diff line number Diff line change
1
+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ fn main ( ) {
12
+ let _ = std:: io:: stdin ( ) ;
13
+ }
You can’t perform that action at this time.
0 commit comments