summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-05-24 13:28:03 +0100
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2016-05-24 16:17:56 +0000
commita4ca886a6c0febac630761f4e7f685fc96a083ca (patch)
tree6cb706f5cdd6b84cef0a4e66abe6074f67f5030c
parent0212bf7e832ad8edfdc8d1eee2f222a99eb41429 (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.cxx9
-rw-r--r--sc/source/core/inc/bcaslot.hxx1
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