diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/indmanager/ind_manager.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/indmanager/ind_manager.c b/src/indmanager/ind_manager.c index 805806f..525d2f8 100644 --- a/src/indmanager/ind_manager.c +++ b/src/indmanager/ind_manager.c @@ -74,6 +74,7 @@ bool maybe_remove_polled(IMManager *, CMPIObjectPath *, IMError *); /* For threading purposes */ pthread_t _t_manage; pthread_mutex_t _t_mutex; +pthread_mutexattr_t _t_mutex_attr; pthread_cond_t _t_cond; /* CMPI rc handler */ @@ -831,7 +832,9 @@ IMManager* im_create_manager(IMInstGather gather, IMFilterChecker f_checker, manager->data = NULL; DEBUG("Manager created"); - if (pthread_mutex_init(&_t_mutex, NULL) || + if (pthread_mutexattr_init(&_t_mutex_attr) || + pthread_mutexattr_settype(&_t_mutex_attr, PTHREAD_MUTEX_ERRORCHECK) || + pthread_mutex_init(&_t_mutex, &_t_mutex_attr) || pthread_cond_init(&_t_cond, NULL)) { *err = IM_ERR_THREAD; free(manager); @@ -860,7 +863,8 @@ bool im_destroy_manager(IMManager *manager, const CMPIContext *ctx, } pthread_mutex_unlock(&_t_mutex); DEBUG("Destroying manager"); - if (pthread_mutex_destroy(&_t_mutex)) { + if (pthread_mutex_destroy(&_t_mutex) || + pthread_mutexattr_destroy(&_t_mutex_attr)) { *err = IM_ERR_THREAD; return false; } |