Robustify Win32 mutex assertions
authorRémi Denis-Courmont <rdenis@simphalempin.com>
Tue, 16 Dec 2008 19:49:13 +0000 (21:49 +0200)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Tue, 16 Dec 2008 19:49:40 +0000 (21:49 +0200)
src/misc/threads.c

index c7d7957..a7c133e 100644 (file)
@@ -334,7 +334,7 @@ void vlc_mutex_destroy (vlc_mutex_t *p_mutex)
     VLC_THREAD_ASSERT ("destroying mutex");
 
 #elif defined( WIN32 )
-    assert (p_mutex->initialized);
+    assert (InterlockedExchange (&p_mutex->initialized, -1) == 1);
     DeleteCriticalSection (&p_mutex->mutex);
 
 #endif
@@ -364,6 +364,7 @@ void vlc_mutex_lock (vlc_mutex_t *p_mutex)
         /* FIXME: destroy the mutex some time... */
         vlc_mutex_unlock (&super_mutex);
     }
+    assert (InterlockedExchange (&p_mutex->initialized, 1) == 1);
     EnterCriticalSection (&p_mutex->mutex);
 
 #endif
@@ -381,6 +382,7 @@ void vlc_mutex_unlock (vlc_mutex_t *p_mutex)
     VLC_THREAD_ASSERT ("unlocking mutex");
 
 #elif defined( WIN32 )
+    assert (InterlockedExchange (&p_mutex->initialized, 1) == 1);
     LeaveCriticalSection (&p_mutex->mutex);
 
 #endif