diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:41:18 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:43:11 +0900 |
commit | f763a99a501650eff2c60288aa6f10ef916d769e (patch) | |
tree | 02af7e13f9a38c888ebf340fe764cbe7dae99da9 /boost/signals2/detail/slot_call_iterator.hpp | |
parent | 5cde13f21d36c7224b0e13d11c4b49379ae5210d (diff) | |
download | boost-f763a99a501650eff2c60288aa6f10ef916d769e.tar.gz boost-f763a99a501650eff2c60288aa6f10ef916d769e.tar.bz2 boost-f763a99a501650eff2c60288aa6f10ef916d769e.zip |
Imported Upstream version 1.62.0upstream/1.62.0
Change-Id: I9d4c1ddb7b7d8f0069217ecc582700f9fda6dd4c
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'boost/signals2/detail/slot_call_iterator.hpp')
-rw-r--r-- | boost/signals2/detail/slot_call_iterator.hpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/boost/signals2/detail/slot_call_iterator.hpp b/boost/signals2/detail/slot_call_iterator.hpp index ee8426f474..9fee16ec69 100644 --- a/boost/signals2/detail/slot_call_iterator.hpp +++ b/boost/signals2/detail/slot_call_iterator.hpp @@ -14,6 +14,7 @@ #include <boost/assert.hpp> #include <boost/aligned_storage.hpp> +#include <boost/core/no_exceptions_support.hpp> #include <boost/iterator/iterator_facade.hpp> #include <boost/optional.hpp> #include <boost/scoped_ptr.hpp> @@ -38,7 +39,7 @@ namespace boost { disconnected_slot_count(0), m_active_slot(0) {} - + ~slot_call_iterator_cache() { if(m_active_slot) @@ -47,9 +48,9 @@ namespace boost { m_active_slot->dec_slot_refcount(lock); } } - + template<typename M> - void set_active_slot(garbage_collecting_lock<M> &lock, + void set_active_slot(garbage_collecting_lock<M> &lock, connection_body_base *active_slot) { if(m_active_slot) @@ -58,7 +59,7 @@ namespace boost { if(m_active_slot) m_active_slot->inc_slot_refcount(lock); } - + optional<ResultType> result; typedef auto_buffer<void_shared_ptr_variant, store_n_objects<10> > tracked_ptrs_type; tracked_ptrs_type tracked_ptrs; @@ -104,15 +105,16 @@ namespace boost { dereference() const { if (!cache->result) { - try + BOOST_TRY { cache->result.reset(cache->f(*iter)); } - catch(expired_slot &) + BOOST_CATCH(expired_slot &) { (*iter)->disconnect(); - throw; + BOOST_RETHROW } + BOOST_CATCH_END } return cache->result.get(); } @@ -140,7 +142,7 @@ namespace boost { else cache->set_active_slot(lock, (*callable_iter).get()); } - + void lock_next_callable() const { if(iter == callable_iter) |