diff options
author | Eike Rathke <erack@redhat.com> | 2014-11-15 02:00:16 +0100 |
---|---|---|
committer | Tobias Madl <tobias.madl.dev@gmail.com> | 2014-12-09 12:35:02 +0000 |
commit | c8322c57678a55a4c58ce13bd2a0895f644016c9 (patch) | |
tree | 60619628043d307c1603c732908d81ca76b90342 /sc | |
parent | 759c4d18d57b06dcc26fb82759599a29c61ef853 (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.cxx | 3 |
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 } |