fix breakage in pthread_cond_wait due to typo
authorRich Felker <dalias@aerifal.cx>
Mon, 23 Feb 2015 17:41:16 +0000 (12:41 -0500)
committerRich Felker <dalias@aerifal.cx>
Mon, 23 Feb 2015 17:41:16 +0000 (12:41 -0500)
due to accidental use of = instead of ==, the error code was always
set to zero in the signaled wake case for non-shared cv waits.
suppressing ETIMEDOUT (the only possible wait error) is harmless and
actually permitted in this case, but suppressing mutex errors could
give the caller false information about the state of the mutex.

commit 8741ffe625363a553e8f509dc3ca7b071bdbab47 introduced this
regression and commit d9da1fb8c592469431c764732d09f7756340190e
preserved it when reorganizing the code.

src/thread/pthread_cond_timedwait.c

index d28b478ee2f4c5fd753bcd9205383817971faadf..adf9c6e55d9303f723bb3bc53849de999533e987 100644 (file)
@@ -163,7 +163,7 @@ relock:
                a_dec(&m->_m_waiters);
 
        /* Since a signal was consumed, cancellation is not permitted. */
-       if (e = ECANCELED) e = 0;
+       if (e == ECANCELED) e = 0;
 
 done:
        __pthread_setcancelstate(cs, 0);