[Libreoffice-commits] .: Branch 'libreoffice-3-5' - dbaccess/source

Julien Nabet serval2412 at kemper.freedesktop.org
Mon Jan 23 12:24:43 PST 2012


 dbaccess/source/ui/browser/unodatbr.cxx |   18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

New commits:
commit 4d60e1a0832dafe05b4eecee7c9607bbd2ce1b07
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Mon Jan 23 21:22:59 2012 +0100

    Fix fdo#44040 VIEWING: Crash when page preview after <f4> (data sources)
    
    Caolán fixed iterator management which was buggy. (thank you !)
    
    (cherry picked from commit 82a061079ae03f841713fd26c809d45621a59836)

diff --git a/dbaccess/source/ui/browser/unodatbr.cxx b/dbaccess/source/ui/browser/unodatbr.cxx
index 9ca1392..7567542 100644
--- a/dbaccess/source/ui/browser/unodatbr.cxx
+++ b/dbaccess/source/ui/browser/unodatbr.cxx
@@ -1410,24 +1410,22 @@ void SAL_CALL SbaTableQueryBrowser::disposing( const EventObject& _rSource ) thr
         Reference< XDispatch > xSource(_rSource.Source, UNO_QUERY);
         if(xSource.is())
         {
-            for (  ExternalFeaturesMap::iterator aLoop = m_aExternalFeatures.begin();
-                  aLoop != m_aExternalFeatures.end();
-                  ++aLoop
-                )
+            ExternalFeaturesMap::iterator aLoop = m_aExternalFeatures.begin();
+            ExternalFeaturesMap::iterator aEnd = m_aExternalFeatures.end();
+            while (aLoop != aEnd)
             {
-                if ( aLoop->second.xDispatcher.get() == xSource.get() )
+                ExternalFeaturesMap::iterator aI = aLoop++;
+                if ( aI->second.xDispatcher.get() == xSource.get() )
                 {
-                    ExternalFeaturesMap::iterator aPrevious = aLoop;
-                    --aPrevious;
+                    sal_uInt16 nSlot = aI->first;
 
                     // remove it
-                    m_aExternalFeatures.erase( aLoop );
+                    m_aExternalFeatures.erase(aI);
 
                     // maybe update the UI
-                    implCheckExternalSlot(aLoop->first);
+                    implCheckExternalSlot(nSlot);
 
                     // continue, the same XDispatch may be resposible for more than one URL
-                    aLoop = aPrevious;
                 }
             }
         }


More information about the Libreoffice-commits mailing list