sw/inc/ndtxt.hxx | 4 ++-- sw/source/core/doc/docedt.cxx | 13 ++++++------- sw/source/core/doc/list.cxx | 12 ++++++------ sw/source/core/docnode/ndtbl.cxx | 8 ++++---- sw/source/core/fields/authfld.cxx | 7 +++---- sw/source/core/frmedt/fecopy.cxx | 9 ++++----- sw/source/core/frmedt/fefly1.cxx | 23 ++++++++++------------- sw/source/core/frmedt/feshview.cxx | 7 +++---- sw/source/core/layout/flyincnt.cxx | 6 +++--- sw/source/core/layout/ftnfrm.cxx | 9 ++++----- sw/source/core/txtnode/ndtxt.cxx | 19 +++++++------------ 11 files changed, 52 insertions(+), 65 deletions(-)
New commits: commit a3f409262db9a9939d40e8f009f3e2396c78c020 Author: Noel Grandin <[email protected]> AuthorDate: Wed Jan 9 16:13:21 2019 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Thu Jan 10 08:28:49 2019 +0100 use unique_ptr in SwTextNode Change-Id: I3f263a617e0ca48cbbe894a061910f1af767bb11 Reviewed-on: https://gerrit.libreoffice.org/66037 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx index 4c0e6468fb9b..e10fd669eddc 100644 --- a/sw/inc/ndtxt.hxx +++ b/sw/inc/ndtxt.hxx @@ -91,8 +91,8 @@ class SW_DLLPUBLIC SwTextNode Therefore: never access directly! */ std::unique_ptr<SwpHints> m_pSwpHints; - mutable SwNodeNum* mpNodeNum; ///< Numbering for this paragraph. - mutable SwNodeNum* mpNodeNumRLHidden; ///< Numbering for this paragraph (hidden redlines) + mutable std::unique_ptr<SwNodeNum> mpNodeNum; ///< Numbering for this paragraph. + mutable std::unique_ptr<SwNodeNum> mpNodeNumRLHidden; ///< Numbering for this paragraph (hidden redlines) OUString m_Text; diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index 07a69d87b0e7..7a2a4cdf0ee1 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -200,8 +200,6 @@ SwTextNode *SwNodes::MakeTextNode( const SwNodeIndex & rWhere, SwTextNode::SwTextNode( const SwNodeIndex &rWhere, SwTextFormatColl *pTextColl, const SfxItemSet* pAutoAttr ) : SwContentNode( rWhere, SwNodeType::Text, pTextColl ), - mpNodeNum( nullptr ), - mpNodeNumRLHidden(nullptr), m_Text(), m_pParaIdleData_Impl(nullptr), m_bContainsHiddenChars(false), @@ -3976,20 +3974,19 @@ const SwNodeNum* SwTextNode::GetNum(SwRootFrame const*const pLayout) const { // invariant: it's only in list in Hide mode if it's in list in normal mode assert(mpNodeNum || !mpNodeNumRLHidden); - return pLayout && pLayout->IsHideRedlines() ? mpNodeNumRLHidden : mpNodeNum; + return pLayout && pLayout->IsHideRedlines() ? mpNodeNumRLHidden.get() : mpNodeNum.get(); } void SwTextNode::DoNum(std::function<void (SwNodeNum &)> const& rFunc) { // temp. clear because GetActualListLevel() may be called and the assert // there triggered during update, which is unhelpful - SwNodeNum * pBackup(mpNodeNumRLHidden); - mpNodeNumRLHidden = nullptr; + std::unique_ptr<SwNodeNum> pBackup = std::move(mpNodeNumRLHidden); assert(mpNodeNum); rFunc(*mpNodeNum); if (pBackup) { - mpNodeNumRLHidden = pBackup; + mpNodeNumRLHidden = std::move(pBackup); rFunc(*mpNodeNumRLHidden); } } @@ -4289,7 +4286,7 @@ void SwTextNode::AddToList() if (pList && GetNodes().IsDocNodes()) // not for undo nodes { assert(!mpNodeNum); - mpNodeNum = new SwNodeNum(this, false); + mpNodeNum.reset(new SwNodeNum(this, false)); pList->InsertListItem(*mpNodeNum, false, GetAttrListLevel()); // iterate all frames & if there's one with hidden layout... SwIterator<SwTextFrame, SwTextNode, sw::IteratorMode::UnwrapMulti> iter(*this); @@ -4320,7 +4317,7 @@ void SwTextNode::AddToListRLHidden() if (pList) { assert(!mpNodeNumRLHidden); - mpNodeNumRLHidden = new SwNodeNum(this, true); + mpNodeNumRLHidden.reset(new SwNodeNum(this, true)); pList->InsertListItem(*mpNodeNumRLHidden, true, GetAttrListLevel()); } } @@ -4332,8 +4329,7 @@ void SwTextNode::RemoveFromList() if ( IsInList() ) { SwList::RemoveListItem( *mpNodeNum ); - delete mpNodeNum; - mpNodeNum = nullptr; + mpNodeNum.reset(); SetWordCountDirty( true ); } @@ -4345,8 +4341,7 @@ void SwTextNode::RemoveFromListRLHidden() { assert(mpNodeNumRLHidden->GetParent() || !GetNodes().IsDocNodes()); SwList::RemoveListItem(*mpNodeNumRLHidden); - delete mpNodeNumRLHidden; - mpNodeNumRLHidden = nullptr; + mpNodeNumRLHidden.reset(); SetWordCountDirty( true ); } commit 6cd5d350db92b78f1d4b8a552e0b8972d48c16a0 Author: Noel Grandin <[email protected]> AuthorDate: Wed Jan 9 15:20:06 2019 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Thu Jan 10 08:28:39 2019 +0100 use unique_ptr in sw Change-Id: I13ab934932a24f49a0e37257d397de7ed88f66bf Reviewed-on: https://gerrit.libreoffice.org/66034 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/sw/source/core/doc/docedt.cxx b/sw/source/core/doc/docedt.cxx index 9fceec0533a6..542ff303216e 100644 --- a/sw/source/core/doc/docedt.cxx +++ b/sw/source/core/doc/docedt.cxx @@ -286,9 +286,9 @@ void SaveRedlEndPosForRestore::Restore() } /// Convert list of ranges of whichIds to a corresponding list of whichIds -static std::vector<sal_uInt16> * lcl_RangesToVector(const sal_uInt16 * pRanges) +static std::vector<sal_uInt16> lcl_RangesToVector(const sal_uInt16 * pRanges) { - std::vector<sal_uInt16> * pResult = new std::vector<sal_uInt16>; + std::vector<sal_uInt16> aResult; int i = 0; while (pRanges[i] != 0) @@ -296,12 +296,12 @@ static std::vector<sal_uInt16> * lcl_RangesToVector(const sal_uInt16 * pRanges) OSL_ENSURE(pRanges[i+1] != 0, "malformed ranges"); for (sal_uInt16 j = pRanges[i]; j < pRanges[i+1]; j++) - pResult->push_back(j); + aResult.push_back(j); i += 2; } - return pResult; + return aResult; } void sw_GetJoinFlags( SwPaM& rPam, bool& rJoinText, bool& rJoinPrev ) @@ -441,10 +441,9 @@ bool sw_JoinText( SwPaM& rPam, bool bJoinPrev ) first resetting all character attributes in first paragraph (pTextNd). */ - std::vector<sal_uInt16> * pShorts = + std::vector<sal_uInt16> aShorts = lcl_RangesToVector(aCharFormatSetRange); - pTextNd->ResetAttr(*pShorts); - delete pShorts; + pTextNd->ResetAttr(aShorts); if( pDelNd->HasSwAttrSet() ) { diff --git a/sw/source/core/doc/list.cxx b/sw/source/core/doc/list.cxx index 6744dd7aa321..b1d055b22d99 100644 --- a/sw/source/core/doc/list.cxx +++ b/sw/source/core/doc/list.cxx @@ -72,8 +72,8 @@ class SwListImpl std::unique_ptr<SwNodeNum> pRootRLHidden; /// top-level SwNodes section std::unique_ptr<SwPaM> pSection; - tListTreeForRange(SwNodeNum *const p1, SwNodeNum *const p2, SwPaM *const p3) - : pRoot(p1), pRootRLHidden(p2), pSection(p3) {} + tListTreeForRange(std::unique_ptr<SwNodeNum> p1, std::unique_ptr<SwNodeNum> p2, std::unique_ptr<SwPaM> p3) + : pRoot(std::move(p1)), pRootRLHidden(std::move(p2)), pSection(std::move(p3)) {} }; typedef std::vector<tListTreeForRange> tListTrees; tListTrees maListTrees; @@ -97,10 +97,10 @@ SwListImpl::SwListImpl( const OUString& sListId, { SwPaM aPam( *pNode, *pNode->EndOfSectionNode() ); - SwNodeNum* pNumberTreeRootNode = new SwNodeNum( &rDefaultListStyle ); - SwNodeNum* pNumberTreeRootNodeRL = new SwNodeNum( &rDefaultListStyle ); - SwPaM* pPam = new SwPaM( *(aPam.Start()), *(aPam.End()) ); - maListTrees.emplace_back(pNumberTreeRootNode, pNumberTreeRootNodeRL, pPam); + maListTrees.emplace_back( + std::make_unique<SwNodeNum>( &rDefaultListStyle ), + std::make_unique<SwNodeNum>( &rDefaultListStyle ), + std::make_unique<SwPaM>( *(aPam.Start()), *(aPam.End()) )); pNode = pNode->EndOfSectionNode(); if (pNode != &rNodes.GetEndOfContent()) diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx index e2fbc874aab3..47246bd18a69 100644 --- a/sw/source/core/docnode/ndtbl.cxx +++ b/sw/source/core/docnode/ndtbl.cxx @@ -3454,19 +3454,19 @@ bool SwDoc::MergeTable( const SwPosition& rPos, bool bWithPrev, sal_uInt16 nMode // Both Tables are present; we can start SwUndoMergeTable* pUndo = nullptr; - SwHistory* pHistory = nullptr; + std::unique_ptr<SwHistory> pHistory; if (GetIDocumentUndoRedo().DoesUndo()) { pUndo = new SwUndoMergeTable( *pTableNd, *pDelTableNd, bWithPrev, nMode ); GetIDocumentUndoRedo().AppendUndo(std::unique_ptr<SwUndo>(pUndo)); - pHistory = new SwHistory; + pHistory.reset(new SwHistory); } // Adapt all "TableFormulas" SwTableFormulaUpdate aMsgHint( &pTableNd->GetTable() ); aMsgHint.m_aData.pDelTable = &pDelTableNd->GetTable(); aMsgHint.m_eFlags = TBL_MERGETBL; - aMsgHint.m_pHistory = pHistory; + aMsgHint.m_pHistory = pHistory.get(); getIDocumentFieldsAccess().UpdateTableFields( &aMsgHint ); // The actual merge @@ -3477,7 +3477,7 @@ bool SwDoc::MergeTable( const SwPosition& rPos, bool bWithPrev, sal_uInt16 nMode { if( pHistory->Count() ) pUndo->SaveFormula( *pHistory ); - delete pHistory; + pHistory.reset(); } if( bRet ) { diff --git a/sw/source/core/fields/authfld.cxx b/sw/source/core/fields/authfld.cxx index 410d0bd22944..1f4a64b7ac2a 100644 --- a/sw/source/core/fields/authfld.cxx +++ b/sw/source/core/fields/authfld.cxx @@ -109,7 +109,7 @@ void SwAuthorityFieldType::RemoveField(sal_IntPtr nHandle) sal_IntPtr SwAuthorityFieldType::AddField(const OUString& rFieldContents) { sal_IntPtr nRet = 0; - SwAuthEntry* pEntry = new SwAuthEntry; + std::unique_ptr<SwAuthEntry> pEntry(new SwAuthEntry); for( sal_Int32 i = 0; i < AUTH_FIELD_END; ++i ) pEntry->SetAuthorField( static_cast<ToxAuthorityField>(i), rFieldContents.getToken( i, TOX_STYLE_DELIMITER )); @@ -118,7 +118,6 @@ sal_IntPtr SwAuthorityFieldType::AddField(const OUString& rFieldContents) { if (*rpTemp == *pEntry) { - delete pEntry; nRet = reinterpret_cast<sal_IntPtr>(static_cast<void*>(rpTemp.get())); rpTemp->AddRef(); return nRet; @@ -126,10 +125,10 @@ sal_IntPtr SwAuthorityFieldType::AddField(const OUString& rFieldContents) } //if it is a new Entry - insert - nRet = reinterpret_cast<sal_IntPtr>(static_cast<void*>(pEntry)); + nRet = reinterpret_cast<sal_IntPtr>(static_cast<void*>(pEntry.get())); // FIXME: what is this ref-counting madness on a object owned by the container? pEntry->AddRef(); - m_DataArr.push_back(std::unique_ptr<SwAuthEntry>(pEntry)); + m_DataArr.push_back(std::move(pEntry)); //re-generate positions of the fields DelSequenceArray(); return nRet; diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx index 2315d6e839c1..430871b0657b 100644 --- a/sw/source/core/frmedt/fecopy.cxx +++ b/sw/source/core/frmedt/fecopy.cxx @@ -585,20 +585,20 @@ bool SwFEShell::Copy( SwFEShell* pDestShell, const Point& rSttPt, aBoxes.empty() ? nullptr : aBoxes[0]->GetSttNd()->FindTableNode()); if (nullptr != pTableNd) { - SwPosition* pDstPos = nullptr; + std::unique_ptr<SwPosition> pDstPos; if( this == pDestShell ) { // same shell? Then create new Cursor at the // DocumentPosition passed - pDstPos = new SwPosition( *GetCursor()->GetPoint() ); + pDstPos.reset(new SwPosition( *GetCursor()->GetPoint() )); Point aPt( rInsPt ); - GetLayout()->GetCursorOfst( pDstPos, aPt ); + GetLayout()->GetCursorOfst( pDstPos.get(), aPt ); if( !pDstPos->nNode.GetNode().IsNoTextNode() ) bRet = true; } else if( !pDestShell->GetCursor()->GetNode().IsNoTextNode() ) { - pDstPos = new SwPosition( *pDestShell->GetCursor()->GetPoint() ); + pDstPos.reset(new SwPosition( *pDestShell->GetCursor()->GetPoint() )); bRet = true; } @@ -625,7 +625,6 @@ bool SwFEShell::Copy( SwFEShell* pDestShell, const Point& rSttPt, if( this == pDestShell ) GetCursorDocPos() = rInsPt; } - delete pDstPos; } } else diff --git a/sw/source/core/frmedt/fefly1.cxx b/sw/source/core/frmedt/fefly1.cxx index 9f9f12bec56a..8729c84d8646 100644 --- a/sw/source/core/frmedt/fefly1.cxx +++ b/sw/source/core/frmedt/fefly1.cxx @@ -590,15 +590,14 @@ Point SwFEShell::FindAnchorPos( const Point& rAbsPos, bool bMoveIt ) // re-created. Thus, delete all fly frames except the <this> before the // anchor attribute is change and re-create them afterwards. { - SwHandleAnchorNodeChg* pHandleAnchorNodeChg( nullptr ); + std::unique_ptr<SwHandleAnchorNodeChg> pHandleAnchorNodeChg; SwFlyFrameFormat* pFlyFrameFormat( dynamic_cast<SwFlyFrameFormat*>(&rFormat) ); if ( pFlyFrameFormat ) { - pHandleAnchorNodeChg = - new SwHandleAnchorNodeChg( *pFlyFrameFormat, aAnch ); + pHandleAnchorNodeChg.reset( + new SwHandleAnchorNodeChg( *pFlyFrameFormat, aAnch )); } rFormat.GetDoc()->SetAttr( aAnch, rFormat ); - delete pHandleAnchorNodeChg; } // #i28701# - no call of method // <CheckCharRectAndTopOfLine()> for to-character anchored @@ -698,7 +697,7 @@ const SwFrameFormat *SwFEShell::NewFlyFrame( const SfxItemSet& rSet, bool bAnchV if( bMoveContent ) { GetDoc()->GetIDocumentUndoRedo().StartUndo( SwUndoId::INSLAYFMT, nullptr ); - SwFormatAnchor* pOldAnchor = nullptr; + std::unique_ptr<SwFormatAnchor> pOldAnchor; bool bHOriChgd = false, bVOriChgd = false; SwFormatVertOrient aOldV; SwFormatHoriOrient aOldH; @@ -709,7 +708,7 @@ const SwFrameFormat *SwFEShell::NewFlyFrame( const SfxItemSet& rSet, bool bAnchV // everything was shifted. Then the position is valid! // JP 13.05.98: if necessary also convert the horizontal/vertical // orientation, to prevent correction during re-anchoring - pOldAnchor = new SwFormatAnchor( rAnch ); + pOldAnchor.reset(new SwFormatAnchor( rAnch )); const_cast<SfxItemSet&>(rSet).Put( SwFormatAnchor( RndStdIds::FLY_AT_PAGE, 1 ) ); const SfxPoolItem* pItem; @@ -779,7 +778,6 @@ const SwFrameFormat *SwFEShell::NewFlyFrame( const SfxItemSet& rSet, bool bAnchV GetDoc()->SetFlyFrameAttr( *pRet, const_cast<SfxItemSet&>(rSet) ); GetDoc()->GetIDocumentUndoRedo().DoUndo(bDoesUndo); } - delete pOldAnchor; } GetDoc()->GetIDocumentUndoRedo().EndUndo( SwUndoId::INSLAYFMT, nullptr ); } @@ -1204,20 +1202,19 @@ void SwFEShell::SetFrameFormat( SwFrameFormat *pNewFormat, bool bKeepOrient, Poi SwFlyFrameFormat* pFlyFormat = pFly->GetFormat(); const Point aPt( pFly->getFrameArea().Pos() ); - SfxItemSet* pSet = nullptr; + std::unique_ptr<SfxItemSet> pSet; const SfxPoolItem* pItem; if( SfxItemState::SET == pNewFormat->GetItemState( RES_ANCHOR, false, &pItem )) { - pSet = new SfxItemSet( GetDoc()->GetAttrPool(), aFrameFormatSetRange ); + pSet.reset(new SfxItemSet( GetDoc()->GetAttrPool(), aFrameFormatSetRange )); pSet->Put( *pItem ); if( !sw_ChkAndSetNewAnchor( *pFly, *pSet )) { - delete pSet; - pSet = nullptr; + pSet.reset(); } } - if( GetDoc()->SetFrameFormatToFly( *pFlyFormat, *pNewFormat, pSet, bKeepOrient )) + if( GetDoc()->SetFrameFormatToFly( *pFlyFormat, *pNewFormat, pSet.get(), bKeepOrient )) { SwFlyFrame* pFrame = pFlyFormat->GetFrame( &aPt ); if( pFrame ) @@ -1225,7 +1222,7 @@ void SwFEShell::SetFrameFormat( SwFrameFormat *pNewFormat, bool bKeepOrient, Poi else GetLayout()->SetAssertFlyPages(); } - delete pSet; + pSet.reset(); EndAllActionAndCall(); } diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx index 81631f659f96..c841bb322d0e 100644 --- a/sw/source/core/frmedt/feshview.cxx +++ b/sw/source/core/frmedt/feshview.cxx @@ -570,15 +570,14 @@ bool SwFEShell::MoveAnchor( SwMove nDir ) // re-created. Thus, delete all fly frames except the <this> before the // anchor attribute is change and re-create them afterwards. { - SwHandleAnchorNodeChg* pHandleAnchorNodeChg( nullptr ); + std::unique_ptr<SwHandleAnchorNodeChg> pHandleAnchorNodeChg; SwFlyFrameFormat* pFlyFrameFormat( dynamic_cast<SwFlyFrameFormat*>(&rFormat) ); if ( pFlyFrameFormat ) { - pHandleAnchorNodeChg = - new SwHandleAnchorNodeChg( *pFlyFrameFormat, aAnch ); + pHandleAnchorNodeChg.reset( + new SwHandleAnchorNodeChg( *pFlyFrameFormat, aAnch )); } rFormat.GetDoc()->SetAttr( aAnch, rFormat ); - delete pHandleAnchorNodeChg; } // #i28701# - no call of method // <CheckCharRectAndTopOfLine()> for to-character anchored diff --git a/sw/source/core/layout/flyincnt.cxx b/sw/source/core/layout/flyincnt.cxx index a89ea5871609..77772d0e6259 100644 --- a/sw/source/core/layout/flyincnt.cxx +++ b/sw/source/core/layout/flyincnt.cxx @@ -65,11 +65,11 @@ void SwFlyInContentFrame::SetRefPoint( const Point& rPoint, { // OD 2004-05-27 #i26791# - member <aRelPos> moved to <SwAnchoredObject> OSL_ENSURE( rPoint != aRef || rRelAttr != GetCurrRelPos(), "SetRefPoint: no change" ); - SwFlyNotify *pNotify = nullptr; + std::unique_ptr<SwFlyNotify> pNotify; // No notify at a locked fly frame, if a fly frame is locked, there's // already a SwFlyNotify object on the stack (MakeAll). if( !IsLocked() ) - pNotify = new SwFlyNotify( this ); + pNotify.reset(new SwFlyNotify( this )); aRef = rPoint; SetCurrRelPos( rRelAttr ); SwRectFnSet aRectFnSet(GetAnchorFrame()); @@ -87,7 +87,7 @@ void SwFlyInContentFrame::SetRefPoint( const Point& rPoint, setFrameAreaPositionValid(false); m_bInvalid = true; Calc(getRootFrame()->GetCurrShell()->GetOut()); - delete pNotify; + pNotify.reset(); } } diff --git a/sw/source/core/layout/ftnfrm.cxx b/sw/source/core/layout/ftnfrm.cxx index 1290c125427e..2bbbab22b2a5 100644 --- a/sw/source/core/layout/ftnfrm.cxx +++ b/sw/source/core/layout/ftnfrm.cxx @@ -2633,7 +2633,7 @@ bool SwLayoutFrame::MoveLowerFootnotes( SwContentFrame *pStart, SwFootnoteBossFr OSL_ENSURE( pOldBoss->IsInSct() == pNewBoss->IsInSct(), "MoveLowerFootnotes: Section confusion" ); - SwFootnoteFrames *pFootnoteArr; + std::unique_ptr<SwFootnoteFrames> pFootnoteArr; SwLayoutFrame* pNewChief = nullptr; SwLayoutFrame* pOldChief = nullptr; @@ -2647,7 +2647,7 @@ bool SwLayoutFrame::MoveLowerFootnotes( SwContentFrame *pStart, SwFootnoteBossFr if (bFoundCandidate) { - pFootnoteArr = new SwFootnoteFrames; + pFootnoteArr.reset(new SwFootnoteFrames); pOldChief = pOldBoss->FindFootnoteBossFrame( true ); pNewChief = pNewBoss->FindFootnoteBossFrame( true ); while( pOldChief->IsAnLower( pStart ) ) @@ -2659,8 +2659,7 @@ bool SwLayoutFrame::MoveLowerFootnotes( SwContentFrame *pStart, SwFootnoteBossFr } if( pFootnoteArr->empty() ) { - delete pFootnoteArr; - pFootnoteArr = nullptr; + pFootnoteArr.reset(); } } else @@ -2673,7 +2672,7 @@ bool SwLayoutFrame::MoveLowerFootnotes( SwContentFrame *pStart, SwFootnoteBossFr if( pFootnoteArr ) { static_cast<SwFootnoteBossFrame*>(pNewChief)->MoveFootnotes_( *pFootnoteArr, true ); - delete pFootnoteArr; + pFootnoteArr.reset(); } bMoved = true; _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
