[Libreoffice-commits] core.git: sw/source

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Fri Sep 24 17:50:15 UTC 2021


 sw/source/filter/ww8/wrtw8nds.cxx |   75 +++++++++++++++++---------------------
 1 file changed, 35 insertions(+), 40 deletions(-)

New commits:
commit 5f19e2679c3d402fbc3de0b64d5ca3e411db711d
Author:     Noel Grandin <noelgrandin at gmail.com>
AuthorDate: Fri Sep 24 13:46:56 2021 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Fri Sep 24 19:49:39 2021 +0200

    no need to allocate this SfxItemSet on the heap
    
    Change-Id: I85bc4a7b9c638b928f55072e92188ee13ca9311f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122583
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx
index 979300ff5ff2..4856fb16065e 100644
--- a/sw/source/filter/ww8/wrtw8nds.cxx
+++ b/sw/source/filter/ww8/wrtw8nds.cxx
@@ -2828,7 +2828,7 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
 
         if ( !bFlyInTable )
         {
-            SfxItemSet* pTmpSet = nullptr;
+            std::optional<SfxItemSet> oTmpSet;
             const sal_uInt8 nPrvNxtNd = rNode.HasPrevNextLayNode();
 
             if( (ND_HAS_PREV_LAYNODE|ND_HAS_NEXT_LAYNODE ) != nPrvNxtNd )
@@ -2841,7 +2841,7 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
                       ( !( ND_HAS_NEXT_LAYNODE & nPrvNxtNd ) &&
                        static_cast<const SvxULSpaceItem*>(pItem)->GetLower()) ))
                 {
-                    pTmpSet = new SfxItemSet( rNode.GetSwAttrSet() );
+                    oTmpSet.emplace( rNode.GetSwAttrSet() );
                     SvxULSpaceItem aUL( *static_cast<const SvxULSpaceItem*>(pItem) );
                     // #i25901#- consider compatibility option
                     if (!m_rDoc.getIDocumentSettingAccess().get(DocumentSettingId::PARA_SPACE_MAX_AT_PAGES))
@@ -2855,7 +2855,7 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
                         if( !(ND_HAS_NEXT_LAYNODE & nPrvNxtNd ))
                             aUL.SetLower( 0 );
                     }
-                    pTmpSet->Put( aUL );
+                    oTmpSet->Put( aUL );
                 }
             }
 
@@ -2872,10 +2872,10 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
                 if( !pFormat )
                     pFormat = &pRule->Get( nLvl );
 
-                if( !pTmpSet )
-                    pTmpSet = new SfxItemSet( rNode.GetSwAttrSet() );
+                if( !oTmpSet )
+                    oTmpSet.emplace( rNode.GetSwAttrSet() );
 
-                SvxLRSpaceItem aLR(ItemGet<SvxLRSpaceItem>(*pTmpSet, RES_LR_SPACE));
+                SvxLRSpaceItem aLR(ItemGet<SvxLRSpaceItem>(*oTmpSet, RES_LR_SPACE));
                 // #i86652#
                 if ( pFormat->GetPositionAndSpaceMode() ==
                                         SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
@@ -2901,12 +2901,12 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
 
                     // correct fix for issue i94187
                     if (SfxItemState::SET !=
-                        pTmpSet->GetItemState(RES_PARATR_NUMRULE, false) )
+                        oTmpSet->GetItemState(RES_PARATR_NUMRULE, false) )
                     {
                         // List style set via paragraph style - then put it into the itemset.
                         // This is needed to get list level and list id exported for
                         // the paragraph.
-                        pTmpSet->Put( SwNumRuleItem( pRule->GetName() ));
+                        oTmpSet->Put( SwNumRuleItem( pRule->GetName() ));
 
                         // Put indent values into the itemset in case that the list
                         // style is applied via paragraph style and the list level
@@ -2915,27 +2915,27 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
                                                 SvxNumberFormat::LABEL_ALIGNMENT &&
                              !rNode.AreListLevelIndentsApplicable() )
                         {
-                            pTmpSet->Put( aLR );
+                            oTmpSet->Put( aLR );
                         }
                     }
                 }
                 else
-                    pTmpSet->ClearItem(RES_PARATR_NUMRULE);
+                    oTmpSet->ClearItem(RES_PARATR_NUMRULE);
 
                 // #i86652#
                 if ( pFormat->GetPositionAndSpaceMode() ==
                                         SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
                 {
-                    pTmpSet->Put(aLR);
+                    oTmpSet->Put(aLR);
 
                     //#i21847#
                     SvxTabStopItem aItem(
-                        ItemGet<SvxTabStopItem>(*pTmpSet, RES_PARATR_TABSTOP));
+                        ItemGet<SvxTabStopItem>(*oTmpSet, RES_PARATR_TABSTOP));
                     SvxTabStop aTabStop(pFormat->GetAbsLSpace());
                     aItem.Insert(aTabStop);
-                    pTmpSet->Put(aItem);
+                    oTmpSet->Put(aItem);
 
-                    MSWordExportBase::CorrectTabStopInSet(*pTmpSet, pFormat->GetAbsLSpace());
+                    MSWordExportBase::CorrectTabStopInSet(*oTmpSet, pFormat->GetAbsLSpace());
                 }
             }
 
@@ -2952,17 +2952,17 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
                 rTextColl.GetFrameDir().GetValue() == SvxFrameDirection::Environment
                )
             {
-                if ( !pTmpSet )
-                    pTmpSet = new SfxItemSet(rNode.GetSwAttrSet());
+                if ( !oTmpSet )
+                    oTmpSet.emplace(rNode.GetSwAttrSet());
 
                 if ( bParaRTL )
-                    pTmpSet->Put(SvxFrameDirectionItem(SvxFrameDirection::Horizontal_RL_TB, RES_FRAMEDIR));
+                    oTmpSet->Put(SvxFrameDirectionItem(SvxFrameDirection::Horizontal_RL_TB, RES_FRAMEDIR));
                 else
-                    pTmpSet->Put(SvxFrameDirectionItem(SvxFrameDirection::Horizontal_LR_TB, RES_FRAMEDIR));
+                    oTmpSet->Put(SvxFrameDirectionItem(SvxFrameDirection::Horizontal_LR_TB, RES_FRAMEDIR));
 
                 const SvxAdjustItem* pAdjust = rNode.GetSwAttrSet().GetItem(RES_PARATR_ADJUST);
                 if ( pAdjust && (pAdjust->GetAdjust() == SvxAdjust::Left || pAdjust->GetAdjust() == SvxAdjust::Right ) )
-                    pTmpSet->Put( *pAdjust, RES_PARATR_ADJUST );
+                    oTmpSet->Put( *pAdjust, RES_PARATR_ADJUST );
             }
             // move code for handling of numbered,
             // but not counted paragraphs to this place. Otherwise, the paragraph
@@ -2979,12 +2979,12 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
                 // no numbering. Here, we will adjust the indents to match
                 // visually.
 
-                if ( !pTmpSet )
-                    pTmpSet = new SfxItemSet(rNode.GetSwAttrSet());
+                if ( !oTmpSet )
+                    oTmpSet.emplace(rNode.GetSwAttrSet());
 
                 // create new LRSpace item, based on the current (if present)
                 const SfxPoolItem* pPoolItem = nullptr;
-                pTmpSet->GetItemState(RES_LR_SPACE, true, &pPoolItem);
+                oTmpSet->GetItemState(RES_LR_SPACE, true, &pPoolItem);
                 SvxLRSpaceItem aLRSpace(
                     ( pPoolItem == nullptr )
                         ? SvxLRSpaceItem(0, 0, 0, 0, RES_LR_SPACE)
@@ -3019,12 +3019,12 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
                     aLRSpace.SetTextFirstLineOffset( 0 );
 
                 // put back the new item
-                pTmpSet->Put( aLRSpace );
+                oTmpSet->Put( aLRSpace );
 
-                // assure that numbering rule is in <pTmpSet>
-                if (SfxItemState::SET != pTmpSet->GetItemState(RES_PARATR_NUMRULE, false) )
+                // assure that numbering rule is in <oTmpSet>
+                if (SfxItemState::SET != oTmpSet->GetItemState(RES_PARATR_NUMRULE, false) )
                 {
-                    pTmpSet->Put( SwNumRuleItem( pRule->GetName() ));
+                    oTmpSet->Put( SwNumRuleItem( pRule->GetName() ));
                 }
             }
 
@@ -3039,19 +3039,17 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
                     = ItemGet<SvxFormatBreakItem>(rNode.GetSwAttrSet(), RES_BREAK);
                 if (rBreakAtParaStyle.GetBreak() == SvxBreak::PageAfter)
                 {
-                    if ( !pTmpSet )
-                    {
-                        pTmpSet = new SfxItemSet(rNode.GetSwAttrSet());
-                    }
-                    pTmpSet->Put(rBreakAtParaStyle);
+                    if ( !oTmpSet )
+                        oTmpSet.emplace(rNode.GetSwAttrSet());
+                    oTmpSet->Put(rBreakAtParaStyle);
                 }
-                else if( pTmpSet )
+                else if( oTmpSet )
                 {   // Even a pagedesc item is set, the break item can be set 'NONE',
                     // this has to be overruled.
                     const SwFormatPageDesc& rPageDescAtParaStyle =
                         ItemGet<SwFormatPageDesc>( rNode, RES_PAGEDESC );
                     if( rPageDescAtParaStyle.KnowsPageDesc() )
-                        pTmpSet->ClearItem( RES_BREAK );
+                        oTmpSet->ClearItem( RES_BREAK );
                 }
             }
 
@@ -3096,11 +3094,11 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
 
                                     if ( bSetAtPara )
                                     {
-                                        if ( !pTmpSet )
-                                            pTmpSet = new SfxItemSet(rNode.GetSwAttrSet());
+                                        if ( !oTmpSet )
+                                            oTmpSet.emplace(rNode.GetSwAttrSet());
 
                                         const SvxFormatKeepItem aKeepItem( true, RES_KEEP );
-                                        pTmpSet->Put( aKeepItem );
+                                        oTmpSet->Put( aKeepItem );
                                     }
                                 }
                             }
@@ -3109,7 +3107,7 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
                 }
             }
 
-            const SfxItemSet* pNewSet = pTmpSet ? pTmpSet : rNode.GetpSwAttrSet();
+            const SfxItemSet* pNewSet = oTmpSet ? &*oTmpSet : rNode.GetpSwAttrSet();
             if( pNewSet )
             {                                               // Para-Attrs
                 m_pStyAttr = &rNode.GetAnyFormatColl().GetAttrSet();
@@ -3122,9 +3120,6 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode )
 
                 m_pStyAttr = nullptr;
                 m_pOutFormatNode = pOldMod;
-
-                if( pNewSet != rNode.GetpSwAttrSet() )
-                    delete pNewSet;
             }
         }
 


More information about the Libreoffice-commits mailing list