diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-11-13 02:31:16 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-11-13 02:31:16 +0000 |
commit | 5136031055433d1eba6a77353fa842f5adfc3dc4 (patch) | |
tree | ff01030051ddb6d18d8fd24c9e4f1d171b974ef6 /thread.c | |
parent | 31f16d772933e0faaca29256b720e944fdf060d6 (diff) | |
download | ruby-5136031055433d1eba6a77353fa842f5adfc3dc4.tar.gz |
* thread.c (rb_barrier_wait): gets rid of recursive deadlock.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -3050,8 +3050,11 @@ VALUE rb_barrier_wait(VALUE self) { VALUE mutex = (VALUE)DATA_PTR(self); + mutex_t *m; if (!mutex) return Qfalse; + GetMutexPtr(mutex, m); + if (m->th == GET_THREAD()) return Qfalse; rb_mutex_lock(mutex); if (DATA_PTR(self)) return Qtrue; rb_mutex_unlock(mutex); |