aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2020-11-16 01:04:56 +0100
committerDario Nieuwenhuis <[email protected]>2020-11-16 01:04:56 +0100
commit49d5121094fb7e2f4ddc3aead351769443515d55 (patch)
tree9f698a5a360c354df910ee2bd99c0f297c201e10
parent2e062f562773f4f4ff978e7976c2d4b08b968a6c (diff)
Fix unsoundness in Forever
-rw-r--r--embassy/src/util/forever.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/embassy/src/util/forever.rs b/embassy/src/util/forever.rs
index 4d3e158ab..80dc0edac 100644
--- a/embassy/src/util/forever.rs
+++ b/embassy/src/util/forever.rs
@@ -18,7 +18,7 @@ impl<T> Forever<T> {
18 } 18 }
19 } 19 }
20 20
21 pub fn put(&self, val: T) -> &'static mut T { 21 pub fn put(&'static self, val: T) -> &'static mut T {
22 if self.used.compare_and_swap(false, true, Ordering::SeqCst) { 22 if self.used.compare_and_swap(false, true, Ordering::SeqCst) {
23 panic!("Forever.put() called multiple times"); 23 panic!("Forever.put() called multiple times");
24 } 24 }
@@ -31,7 +31,7 @@ impl<T> Forever<T> {
31 } 31 }
32 } 32 }
33 33
34 pub unsafe fn steal(&self) -> &'static mut T { 34 pub unsafe fn steal(&'static self) -> &'static mut T {
35 let p = self.t.get(); 35 let p = self.t.get();
36 let p = (&mut *p).as_mut_ptr(); 36 let p = (&mut *p).as_mut_ptr();
37 &mut *p 37 &mut *p