diff options
| author | Michael Goulet <michael@errs.io> | 2022-12-12 18:29:33 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-12-12 20:27:45 +0000 |
| commit | 675fa0b3dd5fe14b43ad5b7862f4528df7322468 (patch) | |
| tree | 0fa647655dcb93fbb694d423f1ccf5de4f63b9dd | |
| parent | d137783642b0b98eda2796dc66bffc2b089a8327 (diff) | |
| download | rust-675fa0b3dd5fe14b43ad5b7862f4528df7322468.tar.gz rust-675fa0b3dd5fe14b43ad5b7862f4528df7322468.zip | |
🚨 fix unsoundness in bootstrap cache code
| -rw-r--r-- | src/bootstrap/cache.rs | 8 |
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()) } } } |
