summaryrefslogtreecommitdiff
path: root/svl/source/notify/listener.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svl/source/notify/listener.cxx')
-rw-r--r--svl/source/notify/listener.cxx10
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();