From b37ed2fcc8a4c64419cf066d3c940fc29b7a2d73 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 16 Jul 2014 23:36:02 +0200 Subject: Avoid cancelling the save thread during saving Ensure that we never cancel the periodic save thread when it currently saves the configuration and data files. Signed-off-by: Lukas Fleischer --- src/io.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/io.c b/src/io.c index f24b0f7..95a42d3 100644 --- a/src/io.c +++ b/src/io.c @@ -1214,10 +1214,14 @@ void io_start_psave_thread(void) /* Stop periodic data saves. */ void io_stop_psave_thread(void) { - if (io_t_psave) { - pthread_cancel(io_t_psave); - pthread_join(io_t_psave, NULL); - } + if (!io_t_psave) + return; + + /* Lock the mutex to avoid cancelling the thread during saving. */ + io_save_mutex_lock(); + pthread_cancel(io_t_psave); + pthread_join(io_t_psave, NULL); + io_save_mutex_unlock(); } /* -- cgit v1.2.3-70-g09d2