diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-05-24 13:28:03 +0100 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2016-05-24 16:17:56 +0000 |
commit | a4ca886a6c0febac630761f4e7f685fc96a083ca (patch) | |
tree | 6cb706f5cdd6b84cef0a4e66abe6074f67f5030c | |
parent | 0212bf7e832ad8edfdc8d1eee2f222a99eb41429 (diff) |
Resolves: tdf#99733 don't crash on moving range of cells
Reviewed-on: https://gerrit.libreoffice.org/25405
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Eike Rathke <erack@redhat.com>
(cherry picked from commit 0d116ad98d7c25df4ad63839bcf2fd7f152956df)
Change-Id: Ib9afc8ef292e517954b24321100862f5235290e5
Reviewed-on: https://gerrit.libreoffice.org/25408
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | sc/source/core/data/bcaslot.cxx | 9 | ||||
-rw-r--r-- | sc/source/core/inc/bcaslot.hxx | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/sc/source/core/data/bcaslot.cxx b/sc/source/core/data/bcaslot.cxx index feee464648b9..38babacbaac6 100644 --- a/sc/source/core/data/bcaslot.cxx +++ b/sc/source/core/data/bcaslot.cxx @@ -530,7 +530,11 @@ void ScBroadcastAreaSlot::EraseArea( ScBroadcastAreas::iterator& rIter ) ScBroadcastArea* pArea = (*rIter).mpArea; aBroadcastAreaTbl.erase( rIter); if (!pArea->DecRef()) + { + if (pBASM->IsInBulkBroadcast()) + pBASM->RemoveBulkGroupArea(pArea); delete pArea; + } } } @@ -1182,6 +1186,11 @@ size_t ScBroadcastAreaSlotMachine::RemoveBulkArea( const ScBroadcastArea* pArea return aBulkBroadcastAreas.erase( pArea ); } +void ScBroadcastAreaSlotMachine::RemoveBulkGroupArea( ScBroadcastArea* pArea ) +{ + maBulkGroupAreas.erase(pArea); +} + void ScBroadcastAreaSlotMachine::PushAreaToBeErased( ScBroadcastAreaSlot* pSlot, ScBroadcastAreas::iterator& rIter ) { diff --git a/sc/source/core/inc/bcaslot.hxx b/sc/source/core/inc/bcaslot.hxx index 27ff119e8125..3b43a198f5b9 100644 --- a/sc/source/core/inc/bcaslot.hxx +++ b/sc/source/core/inc/bcaslot.hxx @@ -324,6 +324,7 @@ public: bool InsertBulkArea( const ScBroadcastArea* p ); void InsertBulkGroupArea( ScBroadcastArea* pArea, const ScRange& rRange ); + void RemoveBulkGroupArea( ScBroadcastArea* pArea ); void BulkBroadcastGroupAreas(); /// @return: how many removed |