From 3aefd00f6aebad7c50210e68650cb8c42e0835cd Mon Sep 17 00:00:00 2001
From: Lukas Fleischer <calcurse@cryptocrack.de>
Date: Tue, 4 Oct 2011 12:13:13 +0200
Subject: Cleanup joinable threads on termination

Always invoke pthread_join() when we blow up a thread via
pthread_cancel() (avoid zombie threads).

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
---
 src/calendar.c | 5 ++++-
 src/io.c       | 5 ++++-
 src/notify.c   | 5 ++++-
 3 files changed, 12 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/calendar.c b/src/calendar.c
index 6664a93..e303ab9 100644
--- a/src/calendar.c
+++ b/src/calendar.c
@@ -145,7 +145,10 @@ void
 calendar_stop_date_thread (void)
 {
   if (calendar_t_date)
-    pthread_cancel (calendar_t_date);
+    {
+      pthread_cancel (calendar_t_date);
+      pthread_join (calendar_t_date, NULL);
+    }
 }
 
 /* Set static variable today to current date */
diff --git a/src/io.c b/src/io.c
index b64dd58..22f8719 100644
--- a/src/io.c
+++ b/src/io.c
@@ -2927,7 +2927,10 @@ void
 io_stop_psave_thread (void)
 {
   if (io_t_psave)
-    pthread_cancel (io_t_psave);
+    {
+      pthread_cancel (io_t_psave);
+      pthread_join (io_t_psave, NULL);
+    }
 }
 
 /*
diff --git a/src/notify.c b/src/notify.c
index 1b7e924..188d92c 100644
--- a/src/notify.c
+++ b/src/notify.c
@@ -188,7 +188,10 @@ void
 notify_stop_main_thread (void)
 {
   if (notify_t_main)
-    pthread_cancel (notify_t_main);
+    {
+      pthread_cancel (notify_t_main);
+      pthread_join (notify_t_main, NULL);
+    }
 }
 
 /*
-- 
cgit v1.2.3-70-g09d2