86a87,93 > > res = WaitForSingleObject(cond->mutex, INFINITE); > if (res != WAIT_OBJECT_0) { > return apr_get_os_error(); > } > cond->num_waiting++; > ReleaseMutex(cond->mutex); 87a95,96 > apr_thread_mutex_unlock(mutex); > 89,96d97 < res = WaitForSingleObject(cond->mutex, INFINITE); < if (res != WAIT_OBJECT_0) { < return apr_get_os_error(); < } < cond->num_waiting++; < ReleaseMutex(cond->mutex); < < apr_thread_mutex_unlock(mutex); 98,99c99 < cond->num_waiting--; < if (res != WAIT_OBJECT_0) { --- > if (res != WAIT_OBJECT_0) { 101d100 < ReleaseMutex(cond->mutex); 103a103,109 > res = WaitForSingleObject(cond->mutex, INFINITE); > if (res != WAIT_OBJECT_0) { > apr_status_t rv = apr_get_os_error(); > return rv; > } > cond->num_waiting--; > 105a112 > cond->signal_all = cond->signalled = 0; 107a115 > ReleaseMutex(cond->mutex); 112a121 > ReleaseMutex(cond->mutex); 114a124 > cond->num_waiting++; 195c205 < cond->signalled = 1; --- > cond->signalled = 0;