summaryrefslogtreecommitdiff
path: root/thread.c
diff options
context:
space:
mode:
authorkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-04-29 01:18:11 +0000
committerkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-04-29 01:18:11 +0000
commit6998f013ab594d3f2499155b1076e45eedf70e34 (patch)
tree6ea375bf09402977280c5bb4878d779ef3b79d69 /thread.c
parent32ae0ae1c2d6b1d24a875e2846db11290907a11f (diff)
* thread.c (lock_func): small cleanup.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31375 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
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);