diff options
| author | Dario Nieuwenhuis <[email protected]> | 2020-11-16 01:04:56 +0100 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2020-11-16 01:04:56 +0100 |
| commit | 49d5121094fb7e2f4ddc3aead351769443515d55 (patch) | |
| tree | 9f698a5a360c354df910ee2bd99c0f297c201e10 | |
| parent | 2e062f562773f4f4ff978e7976c2d4b08b968a6c (diff) | |
Fix unsoundness in Forever
| -rw-r--r-- | embassy/src/util/forever.rs | 4 |
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 |
