|
From: Frank M. H. <fm...@us...> - 2007-03-05 15:10:55
|
Update of /cvsroot/boost-sandbox/boost-sandbox/boost/thread_safe_signals In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv24123/thread_safe_signals Modified Files: connection.hpp slot_base.hpp Log Message: Throw more specific "expired_slot" exception, derived from bad_weak_ptr when slot is called with an expired tracked object. Index: slot_base.hpp =================================================================== RCS file: /cvsroot/boost-sandbox/boost-sandbox/boost/thread_safe_signals/slot_base.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- slot_base.hpp 2 Mar 2007 22:04:47 -0000 1.3 +++ slot_base.hpp 5 Mar 2007 15:10:55 -0000 1.4 @@ -23,6 +23,15 @@ namespace boost { + class expired_slot: public bad_weak_ptr + { + public: + virtual char const * what() const throw() + { + return "boost::expired_slot"; + } + }; + namespace signalslib { namespace detail @@ -40,7 +49,14 @@ tracked_container_type::const_iterator it; for(it = tracked_objects().begin(); it != tracked_objects().end(); ++it) { - locked_objects.push_back(shared_ptr<void>(*it)); + try + { + locked_objects.push_back(shared_ptr<void>(*it)); + } + catch(const bad_weak_ptr &err) + { + throw expired_slot(); + } } return locked_objects; } Index: connection.hpp =================================================================== RCS file: /cvsroot/boost-sandbox/boost-sandbox/boost/thread_safe_signals/connection.hpp,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- connection.hpp 2 Mar 2007 22:04:47 -0000 1.23 +++ connection.hpp 5 Mar 2007 15:10:55 -0000 1.24 @@ -119,7 +119,7 @@ { locked_objects = slot.lock(); } - catch(const bad_weak_ptr &err) + catch(const expired_slot &err) { _connected = false; return locked_objects; |