sc/source/core/data/bcaslot.cxx | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-)
New commits: commit 61fb1d4de37f88f6408a483c3713a373340d6fb3 Author: Eike Rathke <er...@redhat.com> Date: Wed Aug 12 20:15:08 2015 +0200 Resolves: tdf#93388 broadcasting to removed listeners isn't a good idea This cures only a symptom, the underlying cause is that the broadcasters still are listed in maBulkGroupAreas. Change-Id: I9625483016a51eb6f6a7e3d58ed42c7dad3a57b3 (cherry picked from commit 2d4edd7de2e67db5bd17e7a89e2496611ebcc165) Reviewed-on: https://gerrit.libreoffice.org/17684 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/sc/source/core/data/bcaslot.cxx b/sc/source/core/data/bcaslot.cxx index 2174216..f9d6a19 100644 --- a/sc/source/core/data/bcaslot.cxx +++ b/sc/source/core/data/bcaslot.cxx @@ -1155,12 +1155,22 @@ void ScBroadcastAreaSlotMachine::BulkBroadcastGroupAreas() for (; it != itEnd; ++it) { ScBroadcastArea* pArea = it->first; - const sc::ColumnSpanSet* pSpans = it->second; assert(pArea); - assert(pSpans); - aHint.setSpans(pSpans); - pArea->GetBroadcaster().Broadcast(aHint); - bBroadcasted = true; + SvtBroadcaster& rBC = pArea->GetBroadcaster(); + if (!rBC.HasListeners()) + { + /* FIXME: find the cause where the last listener is removed and + * this area is still listed here. */ + SAL_WARN("sc.core","ScBroadcastAreaSlotMachine::BulkBroadcastGroupAreas - pArea has no listeners and should had been removed already"); + } + else + { + const sc::ColumnSpanSet* pSpans = it->second; + assert(pSpans); + aHint.setSpans(pSpans); + rBC.Broadcast(aHint); + bBroadcasted = true; + } } maBulkGroupAreas.clear();
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits