- let prev = LOCAL_STDERR.with(|s| s.borrow_mut().take());
- match (prev, err.as_mut()) {
- (Some(mut stderr), _) => {
- write(&mut *stderr);
- let mut s = Some(stderr);
- LOCAL_STDERR.with(|slot| {
- *slot.borrow_mut() = s.take();
- });
- }
- (None, Some(ref mut err)) => { write(err) }
- _ => {}
+ if let Some(mut local) = LOCAL_STDERR.with(|s| s.borrow_mut().take()) {
+ write(&mut *local);
+ let mut s = Some(local);
+ LOCAL_STDERR.with(|slot| {
+ *slot.borrow_mut() = s.take();
+ });
+ } else if let Some(mut out) = panic_output() {
+ write(&mut out);