summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2014-11-15 02:00:16 +0100
committerTobias Madl <tobias.madl.dev@gmail.com>2014-12-09 12:35:02 +0000
commitc8322c57678a55a4c58ce13bd2a0895f644016c9 (patch)
tree60619628043d307c1603c732908d81ca76b90342 /sc
parent759c4d18d57b06dcc26fb82759599a29c61ef853 (diff)
fdo#73695 prevent use of invalidated iterator due to re-entrance
... through the UNO backdoor.. While charts are updated there can be chart data listeners in BASIC that in turn modify things such that charts are inserted/removed from the listener chain, invalidating the iterator. If that happens break and bail out instead of crashing. Not ideal, but.. Change-Id: Iefb33d3a96d79caed0ee4e19b73e8f811ef3d937
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/tool/chartlis.cxx3
1 files changed, 3 insertions, 0 deletions
diff --git a/sc/source/core/tool/chartlis.cxx b/sc/source/core/tool/chartlis.cxx
index a565d961e528..c3c290542d9a 100644
--- a/sc/source/core/tool/chartlis.cxx
+++ b/sc/source/core/tool/chartlis.cxx
@@ -618,6 +618,9 @@ void ScChartListenerCollection::UpdateDirtyCharts()
if (p->IsDirty())
p->Update();
+ if (meModifiedDuringUpdate == SC_CLCUPDATE_MODIFIED)
+ break; // iterator is invalid
+
if (aIdle.IsActive() && !pDoc->IsImportingXML())
break; // one interfered
}