Also return TRUE for late arrived signals. Thanks to Steven Brooks
authorSebastian Wilhelmi <wilhelmi@ira.uka.de>
Tue, 22 May 2001 14:20:58 +0000 (14:20 +0000)
committerSebastian Wilhelmi <wilhelmi@src.gnome.org>
Tue, 22 May 2001 14:20:58 +0000 (14:20 +0000)
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/ChangeLog
gthread/gthread-win32.c

index b40f8c9..409f274 100644 (file)
@@ -1,5 +1,9 @@
 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
index 17b9eea..6a45847 100644 (file)
@@ -237,8 +237,11 @@ g_cond_wait_internal (GCond *cond,
       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);
     }