about summary refs log tree commit diff
path: root/library/std/src/sys_common/backtrace.rs
diff options
context:
space:
mode:
authorMara Bos <m-ou.se@m-ou.se>2020-10-07 13:54:16 +0200
committerMara Bos <m-ou.se@m-ou.se>2020-10-07 13:59:03 +0200
commit54a71e89546886951e32035960aa82a15a343668 (patch)
tree0b7263c74ee1c744e4b31ae896bbdc2ed2aa0aa6 /library/std/src/sys_common/backtrace.rs
parent5ded394553296d56bb66e925d7001ab3271979ce (diff)
downloadrust-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.rs22
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.