diff options
| author | Mara Bos <m-ou.se@m-ou.se> | 2020-10-07 13:54:16 +0200 |
|---|---|---|
| committer | Mara Bos <m-ou.se@m-ou.se> | 2020-10-07 13:59:03 +0200 |
| commit | 54a71e89546886951e32035960aa82a15a343668 (patch) | |
| tree | 0b7263c74ee1c744e4b31ae896bbdc2ed2aa0aa6 /library/std/src/sys_common/backtrace.rs | |
| parent | 5ded394553296d56bb66e925d7001ab3271979ce (diff) | |
| download | rust-54a71e89546886951e32035960aa82a15a343668.tar.gz rust-54a71e89546886951e32035960aa82a15a343668.zip | |
For backtrace, use StaticMutex instead of a raw sys Mutex.
Diffstat (limited to 'library/std/src/sys_common/backtrace.rs')
| -rw-r--r-- | library/std/src/sys_common/backtrace.rs | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/library/std/src/sys_common/backtrace.rs b/library/std/src/sys_common/backtrace.rs index 1c5fbf7d701..a549770d8b3 100644 --- a/library/std/src/sys_common/backtrace.rs +++ b/library/std/src/sys_common/backtrace.rs @@ -8,27 +8,15 @@ use crate::io; use crate::io::prelude::*; use crate::path::{self, Path, PathBuf}; use crate::sync::atomic::{self, Ordering}; -use crate::sys::mutex::Mutex; +use crate::sys_common::mutex::StaticMutex; /// Max number of frames to print. const MAX_NB_FRAMES: usize = 100; -pub fn lock() -> impl Drop { - struct Guard; - static LOCK: Mutex = Mutex::new(); - - impl Drop for Guard { - fn drop(&mut self) { - unsafe { - LOCK.unlock(); - } - } - } - - unsafe { - LOCK.lock(); - Guard - } +// SAFETY: Don't attempt to lock this reentrantly. +pub unsafe fn lock() -> impl Drop { + static LOCK: StaticMutex = StaticMutex::new(); + LOCK.lock() } /// Prints the current backtrace. |
