]> Repositorios git - scryer-prolog.git/commitdiff
Fix Beta
authorAdrián Arroyo Calle <[email protected]>
Sat, 16 Jan 2021 21:32:50 +0000 (22:32 +0100)
committerAdrián Arroyo Calle <[email protected]>
Sat, 16 Jan 2021 21:32:50 +0000 (22:32 +0100)
src/machine/machine_state_impl.rs

index 0e4a4e1ca204db4fd850fb5dc6c1c0c121bd52d5..5de0714011dd7f2eec4a81ef9a8e1238db2ef27a 100644 (file)
@@ -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<dyn CallPolicy> = Box::new(DefaultCallPolicy {});