diff options
Diffstat (limited to 'svl/source/notify/listener.cxx')
-rw-r--r-- | svl/source/notify/listener.cxx | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/svl/source/notify/listener.cxx b/svl/source/notify/listener.cxx index 89306a534a0d..506647784451 100644 --- a/svl/source/notify/listener.cxx +++ b/svl/source/notify/listener.cxx @@ -19,6 +19,7 @@ #include <svl/listener.hxx> #include <svl/broadcast.hxx> +#include <cassert> SvtListener::QueryBase::QueryBase( sal_uInt16 nId ) : mnId(nId) {} SvtListener::QueryBase::~QueryBase() {} @@ -65,6 +66,15 @@ bool SvtListener::EndListening( SvtBroadcaster& rBroadcaster ) return true; } +// called from the SvtBroadcaster destructor, used to avoid calling +// back into the broadcaster again +void SvtListener::BroadcasterDying( SvtBroadcaster& rBroadcaster ) +{ + BroadcastersType::iterator it = maBroadcasters.find(&rBroadcaster); + if (it != maBroadcasters.end()) + maBroadcasters.erase(it); +} + void SvtListener::EndListeningAll() { BroadcastersType::iterator it = maBroadcasters.begin(); |