From a97c5b1cbb9273a4c13c392899dd6482b30e8515 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Mon, 15 Jun 2020 09:25:31 -0700 Subject: [PATCH] SharedPV::post() handle bad_weak_ptr --- src/server/sharedstate_pv.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/server/sharedstate_pv.cpp b/src/server/sharedstate_pv.cpp index 20e9b58..9151391 100644 --- a/src/server/sharedstate_pv.cpp +++ b/src/server/sharedstate_pv.cpp @@ -345,7 +345,11 @@ void SharedPV::post(const pvd::PVStructure& value, FOR_EACH(monitors_t::const_iterator, it, end, monitors) { (*it)->post(value, changed); - p_monitor.push_back((*it)->shared_from_this()); + try { + p_monitor.push_back((*it)->shared_from_this()); + }catch(std::tr1::bad_weak_ptr& e){ + // ignore post to dead monitor + } } } FOR_EACH(xmonitors_t::iterator, it, end, p_monitor) {