about summary refs log tree commit diff
path: root/src/libstd/sys/windows/mutex.rs
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2018-11-28 10:35:56 +0100
committerRalf Jung <post@ralfj.de>2018-11-28 10:35:56 +0100
commit965fdb029460346553cd9ddc59f5bb3b93e2f508 (patch)
treec6bba9e2cdec4b5a70fb13cdac0e39f8fd06f5ff /src/libstd/sys/windows/mutex.rs
parent12d90aa949f34712a374984bfaf88a5bf2f08685 (diff)
downloadrust-965fdb029460346553cd9ddc59f5bb3b93e2f508.tar.gz
rust-965fdb029460346553cd9ddc59f5bb3b93e2f508.zip
fix build
Diffstat (limited to 'src/libstd/sys/windows/mutex.rs')
-rw-r--r--src/libstd/sys/windows/mutex.rs18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/libstd/sys/windows/mutex.rs b/src/libstd/sys/windows/mutex.rs
index 38ba0c7e035..e54bbfca056 100644
--- a/src/libstd/sys/windows/mutex.rs
+++ b/src/libstd/sys/windows/mutex.rs
@@ -168,23 +168,31 @@ impl ReentrantMutex {
     }
 
     pub unsafe fn init(&mut self) {
-        c::InitializeCriticalSection(self.inner.get().as_mut_ptr());
+        c::InitializeCriticalSection((&mut *self.inner.get()).as_mut_ptr());
     }
 
     pub unsafe fn lock(&self) {
-        c::EnterCriticalSection(self.inner.get().get_ref());
+        // `init` must have been called, so this is now initialized and
+        // we can call `get_ref`.
+        c::EnterCriticalSection((&mut *self.inner.get()).get_ref());
     }
 
     #[inline]
     pub unsafe fn try_lock(&self) -> bool {
-        c::TryEnterCriticalSection(self.inner.get().get_ref()) != 0
+        // `init` must have been called, so this is now initialized and
+        // we can call `get_ref`.
+        c::TryEnterCriticalSection((&mut *self.inner.get()).get_ref()) != 0
     }
 
     pub unsafe fn unlock(&self) {
-        c::LeaveCriticalSection(self.inner.get().get_ref());
+        // `init` must have been called, so this is now initialized and
+        // we can call `get_ref`.
+        c::LeaveCriticalSection((&mut *self.inner.get()).get_ref());
     }
 
     pub unsafe fn destroy(&self) {
-        c::DeleteCriticalSection(self.inner.get().get_ref());
+        // `init` must have been called, so this is now initialized and
+        // we can call `get_ref`.
+        c::DeleteCriticalSection((&mut *self.inner.get()).get_ref());
     }
 }