From de597fca40d129435c53a69c6662d7bfac29771d Mon Sep 17 00:00:00 2001 From: Mara Bos Date: Sun, 27 Sep 2020 15:35:35 +0200 Subject: [PATCH] Optimize set_{panic,print}(None). --- library/std/src/io/stdio.rs | 8 ++++++++ 1 file changed, 8 insertions(+) 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>) -> Option> { 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>) -> Option>) -> Option> { 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();