aboutsummaryrefslogtreecommitdiffstats
path: root/thread.c
diff options
context:
space:
mode:
Diffstat (limited to 'thread.c')
-rw-r--r--thread.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/thread.c b/thread.c
index ae4e669d15..8547ff8738 100644
--- a/thread.c
+++ b/thread.c
@@ -3235,10 +3235,15 @@ lock_func(rb_thread_t *th, mutex_t *mutex, int timeout_ms)
native_mutex_lock(&mutex->lock);
th->transition_for_lock = 0;
- while (mutex->th || (mutex->th = th, 0)) {
+ for (;;) {
struct timespec ts;
int ret;
+ if (!mutex->th) {
+ mutex->th = th;
+ break;
+ }
+
mutex->cond_waiting++;
if (timeout_ms) {
ts = init_lock_timeout(timeout_ms);