 +	}
  #elif !defined( _WIN32 )
  	posix_check_cmd (pthread_mutex_init (&mutex->pthread_mutex, NULL));
- #elif defined(CONFIG_HAVE_CRITICAL_SECTION_EX)
-@@ -283,8 +285,11 @@
- 	WakeAllConditionVariable (&cond->win32_cond);
+ #elif ( _WIN32_WINNT >= 0x0600 )
+@@ -286,8 +288,11 @@
  #else
+ /* Condition variable implementation for Windows XP */
  	EnterCriticalSection (&cond->win32_crit);
 -	for (unsigned i = 0; i < cond->len; i++)
 +	{

--- thread.c	2011-06-19 07:23:32.000000000 +0800
+++ thread.c89.c	2011-06-19 07:23:42.000000000 +0800
@@ -141,11 +141,13 @@
 
 #ifdef PTHREAD_MUTEX_ADAPTIVE_NP

 		LeaveCriticalSection (&cond->win32_crit);
 	}
+	}
 #	endif /* ( _WIN32_WINNT < 0x600 ) */
 }
 #endif /* defined( _WIN32 ) */
