about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-07-09 04:23:29 +0000
committerbors <bors@rust-lang.org>2017-07-09 04:23:29 +0000
commit12fef71f18df9c688193deecef4b95331c9346a7 (patch)
treea9cc62605505dffa10e23b3b2ae5b3a2c7bbba9e /src/libstd
parent79f5c4eb589575ead8c722710af850425b8936db (diff)
parent59981e4057bb0384712f2c34c3c36f7fb9cbeb6d (diff)
downloadrust-12fef71f18df9c688193deecef4b95331c9346a7.tar.gz
rust-12fef71f18df9c688193deecef4b95331c9346a7.zip
Auto merge of #43082 - ids1024:condvar2, r=alexcrichton
Redox: Fix Condvar.wait(); do not lock mutex twice

The atomic_xchg() loop locks the mutex, so the call to mutex_lock is
incorrect, and blocks.
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/sys/redox/condvar.rs4
1 files changed, 1 insertions, 3 deletions
diff --git a/src/libstd/sys/redox/condvar.rs b/src/libstd/sys/redox/condvar.rs
index 0ca0987b245..fe4a89c6f3e 100644
--- a/src/libstd/sys/redox/condvar.rs
+++ b/src/libstd/sys/redox/condvar.rs
@@ -13,7 +13,7 @@ use intrinsics::{atomic_cxchg, atomic_xadd, atomic_xchg};
 use ptr;
 use time::Duration;
 
-use sys::mutex::{mutex_lock, mutex_unlock, Mutex};
+use sys::mutex::{mutex_unlock, Mutex};
 use sys::syscall::{futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE};
 
 pub struct Condvar {
@@ -83,8 +83,6 @@ impl Condvar {
             while atomic_xchg(*lock, 2) != 0 {
                 let _ = futex(*lock, FUTEX_WAIT, 2, 0, ptr::null_mut());
             }
-
-            mutex_lock(*lock);
         }
     }