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+loger...@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+loger...@ok.de> Tested-by: Jochen Nitschke <j.nitschke+loger...@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; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits