diff options
| author | bors <bors@rust-lang.org> | 2017-07-09 04:23:29 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-07-09 04:23:29 +0000 |
| commit | 12fef71f18df9c688193deecef4b95331c9346a7 (patch) | |
| tree | a9cc62605505dffa10e23b3b2ae5b3a2c7bbba9e /src/libstd/sys | |
| parent | 79f5c4eb589575ead8c722710af850425b8936db (diff) | |
| parent | 59981e4057bb0384712f2c34c3c36f7fb9cbeb6d (diff) | |
| download | rust-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/sys')
| -rw-r--r-- | src/libstd/sys/redox/condvar.rs | 4 |
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); } } |
