Index: /OpenSceneGraph/trunk/src/OpenThreads/win32/Win32ConditionPrivateData.h
===================================================================
--- /OpenSceneGraph/trunk/src/OpenThreads/win32/Win32ConditionPrivateData.h (revision 9958)
+++ /OpenSceneGraph/trunk/src/OpenThreads/win32/Win32ConditionPrivateData.h (revision 10457)
@@ -69,5 +69,5 @@
         {
             // Wake up all the waiters.
-            ReleaseSemaphore(sema_.get(),waiters_,NULL);
+            ReleaseSemaphore(sema_.get(), w, NULL);
 
             cooperativeWait(waiters_done_.get(), INFINITE);
@@ -113,6 +113,5 @@
         catch(...){
             // thread is canceled in cooperative wait , do cleanup
-            InterlockedDecrement(&waiters_);
-            long w = InterlockedGet(&waiters_);
+            long w = InterlockedDecrement(&waiters_);
             int last_waiter = was_broadcast_ && w == 0;
 
@@ -124,6 +123,5 @@
         
         // We're ready to return, so there's one less waiter.
-        InterlockedDecrement(&waiters_);
-        long w = InterlockedGet(&waiters_);
+        long w = InterlockedDecrement(&waiters_);
         int last_waiter = was_broadcast_ && w == 0;
 
