0001-fix-unsoundness-in-bootstrap-cache-code.patch 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. From 6bf37780ed49846c78d6707355f1cf44790c4301 Mon Sep 17 00:00:00 2001
  2. From: Michael Goulet <michael@errs.io>
  3. Date: Mon, 12 Dec 2022 18:29:33 +0000
  4. Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A8=20fix=20unsoundness=20in=20bootstr?=
  5. =?UTF-8?q?ap=20cache=20code?=
  6. MIME-Version: 1.0
  7. Content-Type: text/plain; charset=UTF-8
  8. Content-Transfer-Encoding: 8bit
  9. (cherry picked from commit 3fe64ebbce21e79adb64099984e96dfb79bdd0f9)
  10. Signed-off-by: Sebastian Weyer <sebastian.weyer@smile.fr>
  11. ---
  12. src/bootstrap/cache.rs | 8 ++++----
  13. 1 file changed, 4 insertions(+), 4 deletions(-)
  14. diff --git a/src/bootstrap/cache.rs b/src/bootstrap/cache.rs
  15. index be5c9bb0788..05f25af68ea 100644
  16. --- a/src/bootstrap/cache.rs
  17. +++ b/src/bootstrap/cache.rs
  18. @@ -89,16 +89,16 @@ fn hash<H: Hasher>(&self, state: &mut H) {
  19. impl<T: Internable + Deref> Deref for Interned<T> {
  20. type Target = T::Target;
  21. - fn deref(&self) -> &'static Self::Target {
  22. + fn deref(&self) -> &Self::Target {
  23. let l = T::intern_cache().lock().unwrap();
  24. - unsafe { mem::transmute::<&Self::Target, &'static Self::Target>(l.get(*self)) }
  25. + unsafe { mem::transmute::<&Self::Target, &Self::Target>(l.get(*self)) }
  26. }
  27. }
  28. impl<T: Internable + AsRef<U>, U: ?Sized> AsRef<U> for Interned<T> {
  29. - fn as_ref(&self) -> &'static U {
  30. + fn as_ref(&self) -> &U {
  31. let l = T::intern_cache().lock().unwrap();
  32. - unsafe { mem::transmute::<&U, &'static U>(l.get(*self).as_ref()) }
  33. + unsafe { mem::transmute::<&U, &U>(l.get(*self).as_ref()) }
  34. }
  35. }
  36. --
  37. 2.25.1