From 1d538ee70c67fdb9b77b7a0d9d236dbebdcbd346 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Sat, 16 Jan 2021 22:32:50 +0100 Subject: [PATCH] Fix Beta --- src/machine/machine_state_impl.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/machine/machine_state_impl.rs b/src/machine/machine_state_impl.rs index 0e4a4e1c..5de07140 100644 --- a/src/machine/machine_state_impl.rs +++ b/src/machine/machine_state_impl.rs @@ -3130,9 +3130,14 @@ impl MachineState { ) { let interrupted = INTERRUPT.load(std::sync::atomic::Ordering::Relaxed); - if INTERRUPT.compare_and_swap(interrupted, false, std::sync::atomic::Ordering::Relaxed) { - self.throw_interrupt_exception(); - return; + match INTERRUPT.compare_exchange(interrupted, false, std::sync::atomic::Ordering::Relaxed, std::sync::atomic::Ordering::Relaxed) { + Ok(interruption) => { + if interruption { + self.throw_interrupt_exception(); + return; + } + }, + Err(_) => unreachable!() } let mut default_call_policy: Box = Box::new(DefaultCallPolicy {}); -- 2.54.0