- a_inc(&c->_c_waiters);
- do e = __timedwait(&c->_c_block, 1, c->_c_clock, ts, cleanup, &cm, 0);
- while (e == EINTR);
+ do e = __timedwait(&c->_c_block, tid, c->_c_clock, ts, cleanup, &cm, 0);
+ while (c->_c_block == tid && (!e || e==EINTR));
+ if (e == EINTR) e = 0;
+