You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by hd...@apache.org on 2013/10/07 13:44:41 UTC
svn commit: r1529824 -
/openoffice/trunk/main/dbaccess/source/ui/browser/unodatbr.cxx
Author: hdu
Date: Mon Oct 7 11:44:41 2013
New Revision: 1529824
URL: http://svn.apache.org/r1529824
Log:
#i123418# prevent iterator decrement when it is at begin()
also prevent derefencing of an iterator after it has been erased
Modified:
openoffice/trunk/main/dbaccess/source/ui/browser/unodatbr.cxx
Modified: openoffice/trunk/main/dbaccess/source/ui/browser/unodatbr.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/dbaccess/source/ui/browser/unodatbr.cxx?rev=1529824&r1=1529823&r2=1529824&view=diff
==============================================================================
--- openoffice/trunk/main/dbaccess/source/ui/browser/unodatbr.cxx (original)
+++ openoffice/trunk/main/dbaccess/source/ui/browser/unodatbr.cxx Mon Oct 7 11:44:41 2013
@@ -1408,23 +1408,26 @@ void SAL_CALL SbaTableQueryBrowser::disp
{
for ( ExternalFeaturesMap::iterator aLoop = m_aExternalFeatures.begin();
aLoop != m_aExternalFeatures.end();
- ++aLoop
)
{
- if ( aLoop->second.xDispatcher.get() == xSource.get() )
- {
- ExternalFeaturesMap::iterator aPrevious = aLoop;
- --aPrevious;
+ if ( aLoop->second.xDispatcher.get() != xSource.get() ) {
+ ++aLoop;
+ continue;
+ }
- // remove it
- m_aExternalFeatures.erase( aLoop );
+ // prepare to erase the aLoop iterator
+ const sal_uInt16 nSlotId = aLoop->first;
+ ExternalFeaturesMap::iterator aNext = aLoop;
+ ++aNext;
- // maybe update the UI
- implCheckExternalSlot(aLoop->first);
+ // remove it
+ m_aExternalFeatures.erase( aLoop );
- // continue, the same XDispatch may be resposible for more than one URL
- aLoop = aPrevious;
- }
+ // maybe update the UI
+ implCheckExternalSlot( nSlotId );
+
+ // continue, the same XDispatch may be resposible for more than one URL
+ aLoop = aNext;
}
}
else