about summary refs log tree commit diff
path: root/src/liballoc
diff options
context:
space:
mode:
authorAmanieu d'Antras <amanieu@gmail.com>2016-04-05 14:00:17 +0100
committerAmanieu d'Antras <amanieu@gmail.com>2016-04-05 14:00:17 +0100
commitaf047d9c10be73ca9f450b2e3aa2c5c62483981c (patch)
tree12e2d910a1ecbdb7676c73a3fedb1a4dc952bf30 /src/liballoc
parentf92ce2e9fe56942e0fd6a18d0e11bc4a9bdf8ddd (diff)
downloadrust-af047d9c10be73ca9f450b2e3aa2c5c62483981c.tar.gz
rust-af047d9c10be73ca9f450b2e3aa2c5c62483981c.zip
Fix infinite loop in Arc::downgrade
Diffstat (limited to 'src/liballoc')
-rw-r--r--src/liballoc/arc.rs1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/liballoc/arc.rs b/src/liballoc/arc.rs
index 055029dddcd..e1f698cb484 100644
--- a/src/liballoc/arc.rs
+++ b/src/liballoc/arc.rs
@@ -263,6 +263,7 @@ impl<T: ?Sized> Arc<T> {
         loop {
             // check if the weak counter is currently "locked"; if so, spin.
             if cur == usize::MAX {
+                cur = this.inner().weak.load(Relaxed);
                 continue;
             }