[Libreoffice-commits] core.git: svtools/source

Julien Nabet serval2412 at yahoo.fr
Tue Oct 1 01:13:05 PDT 2013


 svtools/source/graphic/grfcache.cxx |   35 ++++++++++++++++-------------------
 1 file changed, 16 insertions(+), 19 deletions(-)

New commits:
commit f154d00206e55194308a7985348069f0d9058db3
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Wed Sep 18 20:17:57 2013 +0200

    Fix iterator management
    
    Change-Id: I32ac35d3a4d0cc2376c5890086d1ff011442683d
    Reviewed-on: https://gerrit.libreoffice.org/5998
    Reviewed-by: Noel Grandin <noelgrandin at gmail.com>
    Tested-by: Noel Grandin <noelgrandin at gmail.com>

diff --git a/svtools/source/graphic/grfcache.cxx b/svtools/source/graphic/grfcache.cxx
index f91b0fd..966cea8 100644
--- a/svtools/source/graphic/grfcache.cxx
+++ b/svtools/source/graphic/grfcache.cxx
@@ -955,30 +955,27 @@ void GraphicCache::ReleaseGraphicObject( const GraphicObject& rObj )
     {
         bRemoved = (*it)->ReleaseGraphicObjectReference( rObj );
 
-        if( bRemoved )
+        if( bRemoved && (0 == (*it)->GetGraphicObjectReferenceCount()) )
         {
-            if( 0 == (*it)->GetGraphicObjectReferenceCount() )
+            // if graphic cache entry has no more references,
+            // the corresponding display cache object can be removed
+            GraphicDisplayCacheEntryList::iterator it2 = maDisplayCache.begin();
+            while( it2 != maDisplayCache.end() )
             {
-                // if graphic cache entry has no more references,
-                // the corresponding display cache object can be removed
-                GraphicDisplayCacheEntryList::iterator it2 = maDisplayCache.begin();
-                while( it2 != maDisplayCache.end() )
+                GraphicDisplayCacheEntry* pDisplayEntry = *it2;
+                if( pDisplayEntry->GetReferencedCacheEntry() == *it )
                 {
-                    GraphicDisplayCacheEntry* pDisplayEntry = *it2;
-                    if( pDisplayEntry->GetReferencedCacheEntry() == *it )
-                    {
-                        mnUsedDisplaySize -= pDisplayEntry->GetCacheSize();
-                        it2 = maDisplayCache.erase( it2 );
-                        delete pDisplayEntry;
-                    }
-                    else
-                        ++it2;
+                    mnUsedDisplaySize -= pDisplayEntry->GetCacheSize();
+                    it2 = maDisplayCache.erase( it2 );
+                    delete pDisplayEntry;
                 }
-
-                // delete graphic cache entry
-                delete *it;
-                it = maGraphicCache.erase( it );
+                else
+                    ++it2;
             }
+
+            // delete graphic cache entry
+            delete *it;
+            it = maGraphicCache.erase( it );
         }
         else
             ++it;


More information about the Libreoffice-commits mailing list