summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sfx2/source/control/itemdel.cxx4
-rw-r--r--svl/source/items/itempool.cxx13
-rw-r--r--svl/source/items/poolio.cxx1
3 files changed, 14 insertions, 4 deletions
diff --git a/sfx2/source/control/itemdel.cxx b/sfx2/source/control/itemdel.cxx
index 23f900902af9..096ab3752864 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 fbf1281169b7..a2fd333b0470 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 30056e376b5f..42a68764caed 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;