Skip to content

Commit 717fa4c

Browse files
committed
Fix UB if calling is_done more than once on Transfer
1 parent 7c62437 commit 717fa4c

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

nrf-hal-common/src/twis.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ impl<T: Instance, B> Transfer<T, B> {
521521
pub fn is_done(&mut self) -> bool {
522522
let inner = self
523523
.inner
524-
.take()
524+
.as_mut()
525525
.unwrap_or_else(|| unsafe { core::hint::unreachable_unchecked() });
526526
inner.twis.is_done();
527527
true
@@ -530,7 +530,7 @@ impl<T: Instance, B> Transfer<T, B> {
530530

531531
impl<T: Instance, B> Drop for Transfer<T, B> {
532532
fn drop(&mut self) {
533-
if let Some(inner) = self.inner.as_mut() {
533+
if let Some(inner) = self.inner.take() {
534534
compiler_fence(SeqCst);
535535
inner.twis.stop();
536536
inner.twis.disable();

0 commit comments

Comments
 (0)