summaryrefslogtreecommitdiffstats
path: root/src/daemon/purple.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon/purple.c')
-rw-r--r--src/daemon/purple.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/daemon/purple.c b/src/daemon/purple.c
index 138b30b..fc4f49f 100644
--- a/src/daemon/purple.c
+++ b/src/daemon/purple.c
@@ -251,9 +251,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);
}
}