diff options
| author | Mara Bos <m-ou.se@m-ou.se> | 2020-09-27 15:35:35 +0200 |
|---|---|---|
| committer | Mara Bos <m-ou.se@m-ou.se> | 2020-09-27 16:04:25 +0200 |
| commit | de597fca40d129435c53a69c6662d7bfac29771d (patch) | |
| tree | 24e8477e68c4a9da6561ce090429043f0948a8cd | |
| parent | ed3ead013f40c65e2972c794a71b756237a31b46 (diff) | |
| download | rust-de597fca40d129435c53a69c6662d7bfac29771d.tar.gz rust-de597fca40d129435c53a69c6662d7bfac29771d.zip | |
Optimize set_{panic,print}(None).
| -rw-r--r-- | library/std/src/io/stdio.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/library/std/src/io/stdio.rs b/library/std/src/io/stdio.rs index df83c329829..36b49401591 100644 --- a/library/std/src/io/stdio.rs +++ b/library/std/src/io/stdio.rs @@ -905,6 +905,10 @@ impl fmt::Debug for StderrLock<'_> { #[doc(hidden)] pub fn set_panic(sink: Option<Box<dyn Write + Send>>) -> Option<Box<dyn Write + Send>> { use crate::mem; + if sink.is_none() && !LOCAL_STREAMS.load(Ordering::Relaxed) { + // LOCAL_STDERR is definitely None since LOCAL_STREAMS is false. + return None; + } let s = LOCAL_STDERR.with(move |slot| mem::replace(&mut *slot.borrow_mut(), sink)).and_then( |mut s| { let _ = s.flush(); @@ -932,6 +936,10 @@ pub fn set_panic(sink: Option<Box<dyn Write + Send>>) -> Option<Box<dyn Write + #[doc(hidden)] pub fn set_print(sink: Option<Box<dyn Write + Send>>) -> Option<Box<dyn Write + Send>> { use crate::mem; + if sink.is_none() && !LOCAL_STREAMS.load(Ordering::Relaxed) { + // LOCAL_STDOUT is definitely None since LOCAL_STREAMS is false. + return None; + } let s = LOCAL_STDOUT.with(move |slot| mem::replace(&mut *slot.borrow_mut(), sink)).and_then( |mut s| { let _ = s.flush(); |
