Skip to content

Commit

Permalink
🚨 fix unsoundness in bootstrap cache code
Browse files Browse the repository at this point in the history
  • Loading branch information
compiler-errors committed Dec 12, 2022
1 parent d137783 commit 675fa0b
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/bootstrap/cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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()) }
}
}

Expand Down

0 comments on commit 675fa0b

Please sign in to comment.