From b45ab5256c9768914bcad854ce32b06caa0539b8 Mon Sep 17 00:00:00 2001 From: "Armin Le Grand (allotropia)" Date: Thu, 28 Sep 2023 17:44:36 +0200 Subject: ITEM: Correct handling of Items in sw ...that use internally an sw::BroadcastingModify*. This caused an error/crash with the testfile ooo58307-1.sxw, thanks to Caolan to find it. For BG info please see comments in the changed sw/source/core/attr/swatrset.cxx Change-Id: Ia91fff19ffb39873c7e2bd5ff8806b95fc5ac7ba Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157383 Tested-by: Jenkins Reviewed-by: Armin Le Grand --- svl/source/items/itemset.cxx | 2 +- svl/source/items/poolitem.cxx | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'svl/source') diff --git a/svl/source/items/itemset.cxx b/svl/source/items/itemset.cxx index 4f71a8aafb5e..48f0679e481d 100644 --- a/svl/source/items/itemset.cxx +++ b/svl/source/items/itemset.cxx @@ -159,7 +159,7 @@ SfxPoolItem const* SfxItemSet::implCreateItemEntry(SfxPoolItem const* pSource, s // these need to be cloned return pSource->Clone(); - if (bItemIsSetMember && IsPooledItem(pSource))//!IsPoolDefaultItem(pSource) && GetPool()->IsItemPoolable(*pSource)) + if (pSource->isShareable() && bItemIsSetMember && IsPooledItem(pSource))//!IsPoolDefaultItem(pSource) && GetPool()->IsItemPoolable(*pSource)) { // shortcut: if we know that the Item is already a member // of another SfxItemSet we can just copy the pointer and increase RefCount diff --git a/svl/source/items/poolitem.cxx b/svl/source/items/poolitem.cxx index a4f02d19b4e3..928ac3de3430 100644 --- a/svl/source/items/poolitem.cxx +++ b/svl/source/items/poolitem.cxx @@ -475,6 +475,7 @@ SfxPoolItem::SfxPoolItem(sal_uInt16 const nWhich) , m_bDeleteOnIdle(false) , m_bStaticDefault(false) , m_bPoolDefault(false) + , m_bShareable(true) #ifdef DBG_UTIL , m_bDeleted(false) #endif -- cgit