[Libreoffice-commits] core.git: sfx2/source svl/source

Jochen Nitschke j.nitschke+logerrit at ok.de
Sat Oct 1 12:33:54 UTC 2016


 sfx2/source/control/itemdel.cxx |    4 ++++
 svl/source/items/itempool.cxx   |   13 +++++++++----
 svl/source/items/poolio.cxx     |    1 +
 3 files changed, 14 insertions(+), 4 deletions(-)

New commits:
commit 32c29f79cb976f8b04eb635857ef3b8eecde443e
Author: Jochen Nitschke <j.nitschke+logerrit at ok.de>
Date:   Sat Oct 1 09:50:36 2016 +0000

    Revert "don't write item right before destruction"
    
    triggers warnings in the dtor if RefCount isn't reset.
    revert till we have better ref counts and don't need debug code in dtor.
    
    This reverts commit b74d2433c856d6d172d9588f4b6d59c31ec02853.
    
    Change-Id: I1835885d94e15339aa7602037d850e1524fd9662
    Reviewed-on: https://gerrit.libreoffice.org/29427
    Reviewed-by: Jochen Nitschke <j.nitschke+logerrit at ok.de>
    Tested-by: Jochen Nitschke <j.nitschke+logerrit at ok.de>

diff --git a/sfx2/source/control/itemdel.cxx b/sfx2/source/control/itemdel.cxx
index 23f9009..096ab37 100644
--- a/sfx2/source/control/itemdel.cxx
+++ b/sfx2/source/control/itemdel.cxx
@@ -59,6 +59,10 @@ void SfxItemDisruptor_Impl::LaunchDeleteOnIdle()
 SfxItemDisruptor_Impl::~SfxItemDisruptor_Impl()
 {
     m_Idle.Stop();
+
+    // reset RefCount (was set to SFX_ITEMS_SPECIAL before!)
+    pItem->SetRefCount( 0 );
+
     delete pItem;
 }
 
diff --git a/svl/source/items/itempool.cxx b/svl/source/items/itempool.cxx
index fbf1281..a2fd333 100644
--- a/svl/source/items/itempool.cxx
+++ b/svl/source/items/itempool.cxx
@@ -334,12 +334,9 @@ void SfxItemPool::ReleaseDefaults
     for ( sal_uInt16 n = 0; n < nCount; ++n )
     {
         assert(IsStaticDefaultItem(pDefaults[n]));
-
+        pDefaults[n]->SetRefCount(0);
         if ( bDelete )
             { delete pDefaults[n] ; pDefaults[n]= nullptr; }
-        else
-            pDefaults[n]->SetRefCount(0);
-
     }
 
     if ( bDelete )
@@ -520,6 +517,9 @@ void SfxItemPool::Delete()
                 auto& rItemPtr = pImpl->maPoolDefaults[n];
                 if (rItemPtr)
                 {
+#ifdef DBG_UTIL
+                    SetRefCount(*rItemPtr, 0);
+#endif
                     delete rItemPtr;
                     rItemPtr = nullptr;
                 }
@@ -549,6 +549,9 @@ void SfxItemPool::Delete()
     {
         if (rItemPtr)
         {
+#ifdef DBG_UTIL
+            SetRefCount(*rItemPtr, 0);
+#endif
             delete rItemPtr;
             rItemPtr = nullptr;
         }
@@ -568,6 +571,7 @@ void SfxItemPool::SetPoolDefaultItem(const SfxPoolItem &rItem)
         pNewDefault->SetKind(SfxItemKind::PoolDefault);
         if (rOldDefault)
         {
+            rOldDefault->SetRefCount(0);
             DELETEZ(rOldDefault);
         }
         rOldDefault = pNewDefault;
@@ -592,6 +596,7 @@ void SfxItemPool::ResetPoolDefaultItem( sal_uInt16 nWhichId )
             pImpl->maPoolDefaults[GetIndex_Impl(nWhichId)];
         if (rOldDefault)
         {
+            rOldDefault->SetRefCount(0);
             DELETEZ(rOldDefault);
         }
     }
diff --git a/svl/source/items/poolio.cxx b/svl/source/items/poolio.cxx
index 30056e3..42a6876 100644
--- a/svl/source/items/poolio.cxx
+++ b/svl/source/items/poolio.cxx
@@ -470,6 +470,7 @@ void SfxItemPool_Impl::readTheItems (
                     {
                         // Reuse
                         SfxItemPool::AddRef( *pOldItem, rpNewItem->GetRefCount() );
+                        SfxItemPool::SetRefCount( *rpNewItem, 0 );
                         delete rpNewItem;
                         rpNewItem = pOldItem;
                         bFound = true;


More information about the Libreoffice-commits mailing list