summaryrefslogtreecommitdiff
path: root/svl/source/notify/broadcast.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svl/source/notify/broadcast.cxx')
-rw-r--r--svl/source/notify/broadcast.cxx8
1 files changed, 6 insertions, 2 deletions
diff --git a/svl/source/notify/broadcast.cxx b/svl/source/notify/broadcast.cxx
index 79c17578e25d..7e59e36e2ec7 100644
--- a/svl/source/notify/broadcast.cxx
+++ b/svl/source/notify/broadcast.cxx
@@ -69,21 +69,25 @@ void SvtBroadcaster::Add( SvtListener* p )
void SvtBroadcaster::Remove( SvtListener* p )
{
+ if (mbDying)
+ return;
+
maListeners.erase(p);
if (maListeners.empty())
ListenersGone();
}
-SvtBroadcaster::SvtBroadcaster() {}
+SvtBroadcaster::SvtBroadcaster() : mbDying(false) {}
SvtBroadcaster::SvtBroadcaster( const SvtBroadcaster &rBC ) :
- maListeners(rBC.maListeners)
+ maListeners(rBC.maListeners), mbDying(false)
{
std::for_each(maListeners.begin(), maListeners.end(), StartListeningHandler(*this));
}
SvtBroadcaster::~SvtBroadcaster()
{
+ mbDying = true;
Broadcast( SfxSimpleHint(SFX_HINT_DYING) );
// unregister all listeners.