2001-05-22 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+ * gthread-win32.c (g_cond_wait_internal): Also return TRUE for
+ late arrived signals. Thanks to Steven Brooks
+ <umbrook0@cs.umanitoba.ca> for pointing out.
+
* gthread-impl.c (g_thread_init): Move the thread implementation
initialization to before assigning GThreadFuncs, which now is just
struct assigned and not memcpy'ed. Completed check for zero
g_ptr_array_remove (cond->array, event);
/* In the meantime we could have been signaled, so we must again
- * wait for the signal, this time with no timeout, to reset it */
- win32_check_for_error (WAIT_FAILED != WaitForSingleObject (event, 0));
+ * wait for the signal, this time with no timeout, to reset
+ * it. retval is set again to honour the late arrival of the
+ * signal */
+ win32_check_for_error (WAIT_FAILED !=
+ (retval = WaitForSingleObject (event, 0)));
LeaveCriticalSection (&cond->lock);
}