Also return TRUE for late arrived signals. Thanks to Steven Brooks

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.
This commit is contained in:
Sebastian Wilhelmi 2001-05-22 14:20:58 +00:00 committed by Sebastian Wilhelmi
parent d6ed8e36e7
commit 896d677f45
2 changed files with 9 additions and 2 deletions

View File

@ -1,5 +1,9 @@
2001-05-22 Sebastian Wilhelmi <wilhelmi@ira.uka.de> 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 * gthread-impl.c (g_thread_init): Move the thread implementation
initialization to before assigning GThreadFuncs, which now is just initialization to before assigning GThreadFuncs, which now is just
struct assigned and not memcpy'ed. Completed check for zero struct assigned and not memcpy'ed. Completed check for zero

View File

@ -237,8 +237,11 @@ g_cond_wait_internal (GCond *cond,
g_ptr_array_remove (cond->array, event); g_ptr_array_remove (cond->array, event);
/* In the meantime we could have been signaled, so we must again /* In the meantime we could have been signaled, so we must again
* wait for the signal, this time with no timeout, to reset it */ * wait for the signal, this time with no timeout, to reset
win32_check_for_error (WAIT_FAILED != WaitForSingleObject (event, 0)); * 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); LeaveCriticalSection (&cond->lock);
} }