about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2022-12-12 18:29:33 +0000
committerMichael Goulet <michael@errs.io>2022-12-12 20:27:45 +0000
commit675fa0b3dd5fe14b43ad5b7862f4528df7322468 (patch)
tree0fa647655dcb93fbb694d423f1ccf5de4f63b9dd
parentd137783642b0b98eda2796dc66bffc2b089a8327 (diff)
downloadrust-675fa0b3dd5fe14b43ad5b7862f4528df7322468.tar.gz
rust-675fa0b3dd5fe14b43ad5b7862f4528df7322468.zip
🚨 fix unsoundness in bootstrap cache code
-rw-r--r--src/bootstrap/cache.rs8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/bootstrap/cache.rs b/src/bootstrap/cache.rs
index be5c9bb0788..05f25af68ea 100644
--- a/src/bootstrap/cache.rs
+++ b/src/bootstrap/cache.rs
@@ -89,16 +89,16 @@ impl<T: Internable + Hash> Hash for Interned<T> {
 
 impl<T: Internable + Deref> Deref for Interned<T> {
     type Target = T::Target;
-    fn deref(&self) -> &'static Self::Target {
+    fn deref(&self) -> &Self::Target {
         let l = T::intern_cache().lock().unwrap();
-        unsafe { mem::transmute::<&Self::Target, &'static Self::Target>(l.get(*self)) }
+        unsafe { mem::transmute::<&Self::Target, &Self::Target>(l.get(*self)) }
     }
 }
 
 impl<T: Internable + AsRef<U>, U: ?Sized> AsRef<U> for Interned<T> {
-    fn as_ref(&self) -> &'static U {
+    fn as_ref(&self) -> &U {
         let l = T::intern_cache().lock().unwrap();
-        unsafe { mem::transmute::<&U, &'static U>(l.get(*self).as_ref()) }
+        unsafe { mem::transmute::<&U, &U>(l.get(*self).as_ref()) }
     }
 }