Kaydet (Commit) 6d438040 authored tarafından Michael Stahl's avatar Michael Stahl

ScTabViewObj: fix STL assertion:

ScTabViewObj methods that invoke listeners need to be prepared for the
listener removing itself in the notification call, which some chart code
does when inserting a chart, resulting in assertion:
 error: attempt to increment a singular iterator.

Change-Id: I939afcc72d2b2040cd94113a0e159605d85ce592
üst 962eeb3e
...@@ -2121,7 +2121,10 @@ void ScTabViewObj::RangeSelDone( const String& rText ) ...@@ -2121,7 +2121,10 @@ void ScTabViewObj::RangeSelDone( const String& rText )
aEvent.Source.set(static_cast<cppu::OWeakObject*>(this)); aEvent.Source.set(static_cast<cppu::OWeakObject*>(this));
aEvent.RangeDescriptor = rtl::OUString( rText ); aEvent.RangeDescriptor = rtl::OUString( rText );
BOOST_FOREACH(const XRangeSelectionListenerUnoRef rListener, aRangeSelListeners) // copy on the stack because listener could remove itself
XRangeSelectionListenerVector const listeners(aRangeSelListeners);
BOOST_FOREACH(const XRangeSelectionListenerUnoRef rListener, listeners)
rListener->done( aEvent ); rListener->done( aEvent );
} }
...@@ -2131,7 +2134,10 @@ void ScTabViewObj::RangeSelAborted( const String& rText ) ...@@ -2131,7 +2134,10 @@ void ScTabViewObj::RangeSelAborted( const String& rText )
aEvent.Source.set(static_cast<cppu::OWeakObject*>(this)); aEvent.Source.set(static_cast<cppu::OWeakObject*>(this));
aEvent.RangeDescriptor = rtl::OUString( rText ); aEvent.RangeDescriptor = rtl::OUString( rText );
BOOST_FOREACH(const XRangeSelectionListenerUnoRef rListener, aRangeSelListeners) // copy on the stack because listener could remove itself
XRangeSelectionListenerVector const listeners(aRangeSelListeners);
BOOST_FOREACH(const XRangeSelectionListenerUnoRef rListener, listeners)
rListener->aborted( aEvent ); rListener->aborted( aEvent );
} }
...@@ -2141,7 +2147,10 @@ void ScTabViewObj::RangeSelChanged( const String& rText ) ...@@ -2141,7 +2147,10 @@ void ScTabViewObj::RangeSelChanged( const String& rText )
aEvent.Source.set(static_cast<cppu::OWeakObject*>(this)); aEvent.Source.set(static_cast<cppu::OWeakObject*>(this));
aEvent.RangeDescriptor = rtl::OUString( rText ); aEvent.RangeDescriptor = rtl::OUString( rText );
BOOST_FOREACH(const XRangeSelectionChangeListenerUnoRef rListener, aRangeChgListeners) // copy on the stack because listener could remove itself
XRangeSelectionChangeListenerVector const listener(aRangeChgListeners);
BOOST_FOREACH(const XRangeSelectionChangeListenerUnoRef rListener, listener)
rListener->descriptorChanged( aEvent ); rListener->descriptorChanged( aEvent );
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment