From 2318e36d888ef0daa2e8d424fa7d3c2e423b5816 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Sat, 29 Sep 2018 17:37:45 +0200 Subject: scatter some asserts in SvtBroadcaster copying a broadcaster that has been marked for destruction is very suspicious. so is adding a listener to such a broadcaster Change-Id: Ic1cae111a600477f16a346004b8017a9a8d242e9 Reviewed-on: https://gerrit.libreoffice.org/61136 Tested-by: Jenkins Reviewed-by: Noel Grandin --- svl/source/notify/broadcast.cxx | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'svl/source/notify') diff --git a/svl/source/notify/broadcast.cxx b/svl/source/notify/broadcast.cxx index 62a52dff18c5..d91a94610d8f 100644 --- a/svl/source/notify/broadcast.cxx +++ b/svl/source/notify/broadcast.cxx @@ -20,6 +20,7 @@ #include #include #include +#include #include void SvtBroadcaster::Normalize() const @@ -43,6 +44,10 @@ void SvtBroadcaster::Normalize() const void SvtBroadcaster::Add( SvtListener* p ) { + assert(!mbDisposing && "called inside my own destructor?"); + assert(!mbAboutToDie && "called after PrepareForDestruction()?"); + if (mbDisposing || mbAboutToDie) + return; maListeners.push_back(p); mbNormalized = false; } @@ -76,6 +81,8 @@ SvtBroadcaster::SvtBroadcaster( const SvtBroadcaster &rBC ) : mbAboutToDie(rBC.mbAboutToDie), mbDisposing(false), mbNormalized(rBC.mbNormalized), mbDestNormalized(rBC.mbDestNormalized) { + assert(!mbAboutToDie && "copying an object marked with PrepareForDestruction()?"); + if (mbAboutToDie) Normalize(); -- cgit