about summary refs log tree commit diff
path: root/library/std/src/thread
diff options
context:
space:
mode:
authorAria Beingessner <a.beingessner@gmail.com>2022-03-22 01:24:55 -0400
committerAria Beingessner <a.beingessner@gmail.com>2022-03-29 20:18:21 -0400
commitc7de289e1c8d24bd55aaa33813e509920a00c364 (patch)
treeb8dcd314558cc77fe1353c890c39c7026b7414b8 /library/std/src/thread
parent5167b6891ccf05aa7a2191675e6c3da95d84374a (diff)
downloadrust-c7de289e1c8d24bd55aaa33813e509920a00c364.tar.gz
rust-c7de289e1c8d24bd55aaa33813e509920a00c364.zip
Make the stdlib largely conform to strict provenance.
Some things like the unwinders and system APIs are not fully conformant,
this only covers a lot of low-hanging fruit.
Diffstat (limited to 'library/std/src/thread')
-rw-r--r--library/std/src/thread/local.rs6
1 files changed, 3 insertions, 3 deletions
diff --git a/library/std/src/thread/local.rs b/library/std/src/thread/local.rs
index a100444f049..ca29261b1c9 100644
--- a/library/std/src/thread/local.rs
+++ b/library/std/src/thread/local.rs
@@ -1071,7 +1071,7 @@ pub mod os {
         pub unsafe fn get(&'static self, init: impl FnOnce() -> T) -> Option<&'static T> {
             // SAFETY: See the documentation for this method.
             let ptr = unsafe { self.os.get() as *mut Value<T> };
-            if ptr as usize > 1 {
+            if ptr.addr() > 1 {
                 // SAFETY: the check ensured the pointer is safe (its destructor
                 // is not running) + it is coming from a trusted source (self).
                 if let Some(ref value) = unsafe { (*ptr).inner.get() } {
@@ -1090,7 +1090,7 @@ pub mod os {
             // SAFETY: No mutable references are ever handed out meaning getting
             // the value is ok.
             let ptr = unsafe { self.os.get() as *mut Value<T> };
-            if ptr as usize == 1 {
+            if ptr.addr() == 1 {
                 // destructor is running
                 return None;
             }
@@ -1130,7 +1130,7 @@ pub mod os {
         unsafe {
             let ptr = Box::from_raw(ptr as *mut Value<T>);
             let key = ptr.key;
-            key.os.set(1 as *mut u8);
+            key.os.set(ptr::invalid_mut(1));
             drop(ptr);
             key.os.set(ptr::null_mut());
         }