From: Thiago Macieira Date: Sun, 19 Nov 2006 18:23:27 +0000 (+0000) Subject: * dbus/dbus-sysdeps-pthread.c (_dbus_pthread_mutex_lock, X-Git-Tag: dbus-1.0.2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c0dbd2a2b5ce42612b1bffe778d6127682cddb45;p=thirdparty%2Fdbus.git * dbus/dbus-sysdeps-pthread.c (_dbus_pthread_mutex_lock, _dbus_pthread_condvar_wait, _dbus_pthread_condvar_wait_timeout): set pmutex->holder to pthread_self() after coming back from a conditional variable wait as well as in one codepath where it was forgotten. Approved by: Havoc Pennington. --- diff --git a/ChangeLog b/ChangeLog index a36a23ab3..dae3f5fac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-11-19 Thiago Macieira + + * dbus/dbus-sysdeps-pthread.c (_dbus_pthread_mutex_lock, + _dbus_pthread_condvar_wait, + _dbus_pthread_condvar_wait_timeout): set pmutex->holder to + pthread_self() after coming back from a conditional variable + wait as well as in one codepath where it was forgotten. + Approved by: Havoc Pennington. + 2006-11-17 Havoc Pennington * update-dbus-docs.sh: allow setting fd.org username via env diff --git a/dbus/dbus-sysdeps-pthread.c b/dbus/dbus-sysdeps-pthread.c index 2f33b1c47..55d3ea281 100644 --- a/dbus/dbus-sysdeps-pthread.c +++ b/dbus/dbus-sysdeps-pthread.c @@ -153,6 +153,7 @@ _dbus_pthread_mutex_lock (DBusMutex *mutex) { /* Wait for the lock */ PTHREAD_CHECK ("pthread_mutex_lock", pthread_mutex_lock (&pmutex->lock)); + pmutex->holder = self; _dbus_assert (pmutex->count == 0); } @@ -222,10 +223,11 @@ _dbus_pthread_condvar_wait (DBusCondVar *cond, _dbus_assert (pthread_equal (pmutex->holder, pthread_self ())); old_count = pmutex->count; - pmutex->count = 0; + pmutex->count = 0; /* allow other threads to lock */ PTHREAD_CHECK ("pthread_cond_wait", pthread_cond_wait (&pcond->cond, &pmutex->lock)); _dbus_assert (pmutex->count == 0); pmutex->count = old_count; + pmutex->holder = pthread_self(); /* other threads may have locked the mutex in the meantime */ } static dbus_bool_t @@ -264,6 +266,7 @@ _dbus_pthread_condvar_wait_timeout (DBusCondVar *cond, _dbus_assert (pmutex->count == 0); pmutex->count = old_count; + pmutex->holder = pthread_self(); /* other threads may have locked the mutex in the meantime */ /* return true if we did not time out */ return result != ETIMEDOUT;