changeset 393:f53d8e683276

Irccd: block timer destruction signal to avoid inifinite lock
author David Demelier <markand@malikania.fr>
date Mon, 26 Dec 2016 14:24:44 +0100
parents 0be0f1b863eb
children c6fbb6e0e06d
files libirccd-js/irccd/timer.cpp
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libirccd-js/irccd/timer.cpp	Fri Dec 23 13:47:24 2016 +0100
+++ b/libirccd-js/irccd/timer.cpp	Mon Dec 26 14:24:44 2016 +0100
@@ -19,6 +19,8 @@
 #include <cassert>
 #include <chrono>
 
+#include <iostream>
+
 #include "timer.hpp"
 
 namespace irccd {
@@ -65,8 +67,13 @@
     assert(m_state != Running);
 
     try {
-        m_state = Stopped;
-        m_condition.notify_one();
+        {
+            std::lock_guard<std::mutex> lk(m_mutex);
+
+            m_state = Stopped;
+            m_condition.notify_one();
+        }
+
         m_thread.join();
     } catch (...) {
     }