diff --git a/ecal/core/include/ecal/ecal_timed_cb.h b/ecal/core/include/ecal/ecal_timed_cb.h index 5581b6d518..a8cceb00f9 100644 --- a/ecal/core/include/ecal/ecal_timed_cb.h +++ b/ecal/core/include/ecal/ecal_timed_cb.h @@ -97,7 +97,10 @@ namespace eCAL { if (!m_running) return(false); m_stop = true; - m_thread.join(); + // Wait for the callback thread to finish + if (m_thread.joinable()) { + m_thread.join(); + } m_running = false; return(true); } diff --git a/ecal/core/src/ecal_thread.h b/ecal/core/src/ecal_thread.h index 7c5fa3c65f..135a4b1a1d 100644 --- a/ecal/core/src/ecal_thread.h +++ b/ecal/core/src/ecal_thread.h @@ -37,6 +37,11 @@ namespace eCAL CThread(); virtual ~CThread(); + CThread(const CThread&) = delete; + CThread& operator=(const CThread&) = delete; + CThread(CThread&& rhs) = delete; + CThread& operator=(CThread&& rhs) = delete; + int Start(int period, std::function ext_caller_); int Stop(); int Fire(); diff --git a/ecal/core/src/ecal_timer.cpp b/ecal/core/src/ecal_timer.cpp index 199cd15446..c5dc50aecf 100644 --- a/ecal/core/src/ecal_timer.cpp +++ b/ecal/core/src/ecal_timer.cpp @@ -38,6 +38,10 @@ namespace eCAL CTimerImpl(const int timeout_, TimerCallbackT callback_, const int delay_) : m_stop(false), m_running(false) { Start(timeout_, callback_, delay_); } virtual ~CTimerImpl() { Stop(); } + CTimerImpl(const CTimerImpl&) = delete; + CTimerImpl& operator=(const CTimerImpl&) = delete; + CTimerImpl(CTimerImpl&& rhs) = delete; + CTimerImpl& operator=(CTimerImpl&& rhs) = delete; bool Start(const int timeout_, TimerCallbackT callback_, const int delay_) { diff --git a/ecal/core/src/io/ecal_memfile_pool.cpp b/ecal/core/src/io/ecal_memfile_pool.cpp index 04ac67929a..12afb7fdb0 100644 --- a/ecal/core/src/io/ecal_memfile_pool.cpp +++ b/ecal/core/src/io/ecal_memfile_pool.cpp @@ -309,7 +309,10 @@ namespace eCAL { } - CMemFileThreadPool::~CMemFileThreadPool() = default; + CMemFileThreadPool::~CMemFileThreadPool() + { + Destroy(); + } void CMemFileThreadPool::Create() { diff --git a/ecal/core/src/io/ecal_memfile_pool.h b/ecal/core/src/io/ecal_memfile_pool.h index c09c7f6b7e..4cd6490927 100644 --- a/ecal/core/src/io/ecal_memfile_pool.h +++ b/ecal/core/src/io/ecal_memfile_pool.h @@ -50,6 +50,11 @@ namespace eCAL CMemFileObserver(); ~CMemFileObserver(); + CMemFileObserver(const CMemFileObserver&) = delete; + CMemFileObserver& operator=(const CMemFileObserver&) = delete; + CMemFileObserver(CMemFileObserver&& rhs) = delete; + CMemFileObserver& operator=(CMemFileObserver&& rhs) = delete; + bool Create(const std::string& memfile_name_, const std::string& memfile_event_); bool Destroy();