]> git.lizzy.rs Git - rust.git/commitdiff
🚨 fix unsoundness in bootstrap cache code
authorMichael Goulet <michael@errs.io>
Mon, 12 Dec 2022 18:29:33 +0000 (18:29 +0000)
committerMichael Goulet <michael@errs.io>
Mon, 12 Dec 2022 20:27:45 +0000 (20:27 +0000)
src/bootstrap/cache.rs

index be5c9bb07880891cbe23550c952f2aed26a93c9a..05f25af68ea8fe5985e11370df9bbe03c2951e01 100644 (file)
@@ -89,16 +89,16 @@ fn hash<H: Hasher>(&self, state: &mut H) {
 
 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()) }
     }
 }