about summary refs log tree commit diff
path: root/library/std/src/sync/mpmc/array.rs
diff options
context:
space:
mode:
Diffstat (limited to 'library/std/src/sync/mpmc/array.rs')
-rw-r--r--library/std/src/sync/mpmc/array.rs6
1 files changed, 3 insertions, 3 deletions
diff --git a/library/std/src/sync/mpmc/array.rs b/library/std/src/sync/mpmc/array.rs
index dfa47702103..2d65bd27d86 100644
--- a/library/std/src/sync/mpmc/array.rs
+++ b/library/std/src/sync/mpmc/array.rs
@@ -167,9 +167,9 @@ impl<T> Channel<T> {
                         token.array.stamp = tail + 1;
                         return true;
                     }
-                    Err(t) => {
-                        tail = t;
+                    Err(_) => {
                         backoff.spin();
+                        tail = self.load(Ordering::Relaxed);
                     }
                 }
             } else if stamp.wrapping_add(self.one_lap) == tail + 1 {
@@ -251,8 +251,8 @@ impl<T> Channel<T> {
                         return true;
                     }
                     Err(h) => {
-                        head = h;
                         backoff.spin();
+                        head = self.head.load(Ordering::Relaxed);
                     }
                 }
             } else if stamp == head {