summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLukas Fleischer <calcurse@cryptocrack.de>2011-10-04 12:13:13 +0200
committerLukas Fleischer <calcurse@cryptocrack.de>2011-10-04 12:26:42 +0200
commit3aefd00f6aebad7c50210e68650cb8c42e0835cd (patch)
treed7fe18390e705c0288ac6cd3c2d3c66f13001b8f /src
parent4cd62fb0fba6ddb5c79e3d2dc109b5b7d98612e2 (diff)
downloadcalcurse-3aefd00f6aebad7c50210e68650cb8c42e0835cd.tar.gz
calcurse-3aefd00f6aebad7c50210e68650cb8c42e0835cd.zip
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>
Diffstat (limited to 'src')
-rw-r--r--src/calendar.c5
-rw-r--r--src/io.c5
-rw-r--r--src/notify.c5
3 files changed, 12 insertions, 3 deletions
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);
+ }
}
/*