]> granicus.if.org Git - python/commitdiff
Issue #15038 : Fixing the condition broadcast and docs.
authorKristján Valur Jónsson <sweskman@gmail.com>
Wed, 20 Mar 2013 03:18:37 +0000 (20:18 -0700)
committerKristján Valur Jónsson <sweskman@gmail.com>
Wed, 20 Mar 2013 03:18:37 +0000 (20:18 -0700)
Python/condvar.h

index fe6bd74da8cc64e0385328f7701e635a306dcc7f..bbb40ba18e96fac90cd0f7f5a6146cae355c2f0e 100644 (file)
@@ -163,10 +163,9 @@ PyCOND_TIMEDWAIT(PyCOND_T *cond, PyMUTEX_T *mut, long us)
 
    Generic emulations of the pthread_cond_* API using
    earlier Win32 functions can be found on the Web.
-   The following read can be edificating (or not):
+   The following read can be give background information to these issues,
+   but the implementations are all broken in some way.
    http://www.cse.wustl.edu/~schmidt/win32-cv-1.html
-
-   See also 
 */
 
 typedef CRITICAL_SECTION PyMUTEX_T;
@@ -297,9 +296,10 @@ PyCOND_SIGNAL(PyCOND_T *cv)
 Py_LOCAL_INLINE(int)
 PyCOND_BROADCAST(PyCOND_T *cv)
 {
-    if (cv->waiting > 0) {
-        return ReleaseSemaphore(cv->sem, cv->waiting, NULL) ? 0 : -1;
-               cv->waiting = 0;
+    int waiting = cv->waiting;
+    if (waiting > 0) {
+        cv->waiting = 0;
+        return ReleaseSemaphore(cv->sem, waiting, NULL) ? 0 : -1;
     }
     return 0;
 }