From b37ed2fcc8a4c64419cf066d3c940fc29b7a2d73 Mon Sep 17 00:00:00 2001
From: Lukas Fleischer <calcurse@cryptocrack.de>
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 <calcurse@cryptocrack.de>
---
 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