From e04f01abca1b7bc2cf8d643628a9dd31d476897f Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Mon, 29 Oct 2018 14:26:48 +0200 Subject: loplugin:useuniqueptr in sot Change-Id: If4d093079e13cfaebb9d226e39581b0c66e82786 Reviewed-on: https://gerrit.libreoffice.org/62651 Tested-by: Jenkins Reviewed-by: Noel Grandin --- sot/source/sdstor/stgdir.cxx | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) (limited to 'sot/source/sdstor/stgdir.cxx') diff --git a/sot/source/sdstor/stgdir.cxx b/sot/source/sdstor/stgdir.cxx index da729a9031ef..6f52a38475d6 100644 --- a/sot/source/sdstor/stgdir.cxx +++ b/sot/source/sdstor/stgdir.cxx @@ -626,13 +626,13 @@ bool StgDirEntry::Tmp2Strm() if ( !m_pStgStrm ) return false; sal_uInt64 n = m_pTmpStrm->GetSize(); - StgStrm* pNewStrm; + std::unique_ptr pNewStrm; StgIo& rIo = m_pStgStrm->GetIo(); sal_uLong nThreshold = static_cast(rIo.m_aHdr.GetThreshold()); if( n < nThreshold ) - pNewStrm = new StgSmallStrm( rIo, STG_EOF ); + pNewStrm.reset(new StgSmallStrm( rIo, STG_EOF )); else - pNewStrm = new StgDataStrm( rIo, STG_EOF ); + pNewStrm.reset(new StgDataStrm( rIo, STG_EOF )); if( pNewStrm->SetSize( n ) ) { sal_uInt8 p[ 4096 ]; @@ -652,16 +652,16 @@ bool StgDirEntry::Tmp2Strm() { m_pTmpStrm->Seek( m_nPos ); m_pStgStrm->GetIo().SetError( m_pTmpStrm->GetError() ); - delete pNewStrm; return false; } else { m_pStgStrm->SetSize( 0 ); delete m_pStgStrm; - m_pStgStrm = pNewStrm; + m_pStgStrm = pNewStrm.get(); pNewStrm->SetEntry( *this ); pNewStrm->Pos2Page( m_nPos ); + pNewStrm.release(); delete m_pTmpStrm; delete m_pCurStrm; m_pTmpStrm = m_pCurStrm = nullptr; @@ -741,11 +741,10 @@ void StgDirStrm::SetupEntry( sal_Int32 n, StgDirEntry* pUpper ) sal_uInt64 nUnderlyingStreamSize = pUnderlyingStream->TellEnd(); bool bOk(false); - StgDirEntry* pCur = new StgDirEntry( p, STGENTRY_SIZE, nUnderlyingStreamSize, &bOk ); + std::unique_ptr pCur(new StgDirEntry( p, STGENTRY_SIZE, nUnderlyingStreamSize, &bOk )); if( !bOk ) { - delete pCur; m_rIo.SetError( SVSTREAM_GENERALERROR ); // an error occurred return; @@ -764,7 +763,6 @@ void StgDirStrm::SetupEntry( sal_Int32 n, StgDirEntry* pUpper ) nLeaf = pCur->m_aEntry.GetLeaf( STG_CHILD ); if (nLeaf != STG_FREE && nLeaf == n) { - delete pCur; m_rIo.SetError( SVSTREAM_GENERALERROR ); return; } @@ -779,14 +777,13 @@ void StgDirStrm::SetupEntry( sal_Int32 n, StgDirEntry* pUpper ) if (pUp->m_aEntry.GetLeaf(STG_CHILD) == nLeaf) { SAL_WARN("sot", "Leaf node of upper StgDirEntry is same as current StgDirEntry's leaf node. Circular entry chain, discarding link"); - delete pCur; return; } pUp = pUp->m_pUp; } if( StgAvlNode::Insert - ( reinterpret_cast( pUpper ? &pUpper->m_pDown : &m_pRoot ), pCur ) ) + ( reinterpret_cast( pUpper ? &pUpper->m_pDown : &m_pRoot ), pCur.get() ) ) { pCur->m_pUp = pUpper; } @@ -796,16 +793,11 @@ void StgDirStrm::SetupEntry( sal_Int32 n, StgDirEntry* pUpper ) // that contain duplicate entries in 'Directory' section // so don't set the error flag here and just skip those // (was: rIo.SetError( SVSTREAM_CANNOT_MAKE );) - delete pCur; return; } SetupEntry( nLeft, pUpper ); SetupEntry( nRight, pUpper ); - SetupEntry( nLeaf, pCur ); - } - else - { - delete pCur; + SetupEntry( nLeaf, pCur.release() ); } } } @@ -928,22 +920,23 @@ StgDirEntry* StgDirStrm::Create( StgDirEntry& rStg, const OUString& rName, StgEn pRes->m_bRemoved = pRes->m_bTemp = false; pRes->m_bDirty = true; + return pRes; } else { - pRes = new StgDirEntry( aEntry ); - if( StgAvlNode::Insert( reinterpret_cast(&rStg.m_pDown), pRes ) ) + std::unique_ptr pNewRes(new StgDirEntry( aEntry )); + if( StgAvlNode::Insert( reinterpret_cast(&rStg.m_pDown), pNewRes.get() ) ) { - pRes->m_pUp = &rStg; - pRes->m_bDirty = true; + pNewRes->m_pUp = &rStg; + pNewRes->m_bDirty = true; } else { m_rIo.SetError( SVSTREAM_CANNOT_MAKE ); - delete pRes; pRes = nullptr; + pNewRes.reset(); } + return pNewRes.release(); } - return pRes; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit