]> git.lizzy.rs Git - rust.git/commitdiff
fix build
authorRalf Jung <post@ralfj.de>
Wed, 28 Nov 2018 09:35:56 +0000 (10:35 +0100)
committerRalf Jung <post@ralfj.de>
Wed, 28 Nov 2018 09:35:56 +0000 (10:35 +0100)
src/libstd/sys/windows/mutex.rs

index 38ba0c7e035e5be8e1d5f3e83cd2e8cb40c26b7a..e54bbfca056170d05e2156a4cfb95492ae5a4ca3 100644 (file)
@@ -168,23 +168,31 @@ pub fn uninitialized() -> 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());
     }
 }