svl/source/items/itempool.cxx |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

New commits:
commit 55dd17942cde0a1dd50fb534cff415adbc0b6a5e
Author: Andre Fischer <a...@apache.org>
Date:   Thu Jun 21 07:27:44 2012 +0000

    i#120055 Prevent crash caused by un-disposed secondary item pool.
    
    Conflicts:
        svl/source/items/itempool.cxx
    
    Adapted to new pImp implementation. (erAck)
    
    Change-Id: I106f0dc41bc8f41d394d680fe89a8fee6a2f508a

diff --git a/svl/source/items/itempool.cxx b/svl/source/items/itempool.cxx
index 13b3b2a..54593b3 100644
--- a/svl/source/items/itempool.cxx
+++ b/svl/source/items/itempool.cxx
@@ -338,10 +338,21 @@ void SfxItemPool::ReleaseDefaults
 SfxItemPool::~SfxItemPool()
 {
     DBG_DTOR(SfxItemPool, 0);
-    DBG_ASSERT( pImp->mpMaster == this, "destroying active Secondary-Pool" );
 
     if ( !pImp->maPoolItems.empty() && pImp->ppPoolDefaults )
         Delete();
+
+    if (pImp->mpMaster != NULL && pImp->mpMaster != this)
+    {
+        // This condition indicates an error.  A
+        // pImp->mpMaster->SetSecondaryPool(...) call should have been made
+        // earlier to prevent this.  At this point we can only try to
+        // prevent a crash later on.
+        DBG_ASSERT( pImp->mpMaster == this, "destroying active Secondary-Pool" 
);
+        if (pImp->mpMaster->pImp->mpSecondary == this)
+            pImp->mpMaster->pImp->mpSecondary = NULL;
+    }
+
     delete pImp;
 }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to