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;
|