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 | 4c8e05775341d68ec8a3a413820057f65d897b96 (patch) | |
| tree | ff01030051ddb6d18d8fd24c9e4f1d171b974ef6 /thread.c | |
| parent | 6788da78ce4001985cc59d0122ad342e4b08f461 (diff) | |
| download | ruby-4c8e05775341d68ec8a3a413820057f65d897b96.tar.gz ruby-4c8e05775341d68ec8a3a413820057f65d897b96.tar.xz ruby-4c8e05775341d68ec8a3a413820057f65d897b96.zip | |
* thread.c (rb_barrier_wait): gets rid of recursive deadlock.
git-svn-id: http://svn.ruby-lang.org/repos/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); |
