diff options
Diffstat (limited to 'src/daemon/purple.c')
-rw-r--r-- | src/daemon/purple.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/daemon/purple.c b/src/daemon/purple.c index 882ea61..e004448 100644 --- a/src/daemon/purple.c +++ b/src/daemon/purple.c @@ -246,9 +246,14 @@ int purple_init(void) void purple_close(void) { + int status; - if (pthread_mutex_trylock(&state.mutex) == EBUSY) { + status = pthread_mutex_trylock(&state.mutex); + + if (status == EBUSY) { pthread_cancel(state.purple); pthread_join(state.purple, NULL); + } else if (!status) { + pthread_mutex_unlock(&state.mutex); } } |