diff options
author | Lukas Fleischer <calcurse@cryptocrack.de> | 2011-10-04 12:13:13 +0200 |
---|---|---|
committer | Lukas Fleischer <calcurse@cryptocrack.de> | 2011-10-04 12:26:42 +0200 |
commit | 3aefd00f6aebad7c50210e68650cb8c42e0835cd (patch) | |
tree | d7fe18390e705c0288ac6cd3c2d3c66f13001b8f /src | |
parent | 4cd62fb0fba6ddb5c79e3d2dc109b5b7d98612e2 (diff) | |
download | calcurse-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.c | 5 | ||||
-rw-r--r-- | src/io.c | 5 | ||||
-rw-r--r-- | src/notify.c | 5 |
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 */ @@ -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); + } } /* |