cui/source/dialogs/iconcdlg.cxx | 10 ----- include/svl/svdde.hxx | 7 ++- svl/source/svdde/ddeimp.hxx | 2 - svl/source/svdde/ddesvr.cxx | 29 +++++----------- svl/unx/source/svdde/ddedummy.cxx | 5 ++ svtools/source/graphic/grfcache.cxx | 64 +++++++++--------------------------- 6 files changed, 35 insertions(+), 82 deletions(-)
New commits: commit 327a3ac9b320552ee778b5fb5d1f0d5966d8ea7b Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Mon Dec 18 12:55:05 2017 +0200 fix bug in IconChoiceDialog::dispose after commit 12bb4bc980863d4338725cf5a5dcaf3acbfddc09 convert HyperLinkPageType to scoped enum Change-Id: Icb1afcdea38f231bf9b7119eb4c1bedbf7494962 Reviewed-on: https://gerrit.libreoffice.org/46707 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/cui/source/dialogs/iconcdlg.cxx b/cui/source/dialogs/iconcdlg.cxx index acf04885b488..1b1009389595 100644 --- a/cui/source/dialogs/iconcdlg.cxx +++ b/cui/source/dialogs/iconcdlg.cxx @@ -224,16 +224,6 @@ void IconChoiceDialog::dispose() } maPageList.clear(); - if (m_pIconCtrl) - { - // remove Userdata from Icons - for ( sal_Int32 i=0; i < m_pIconCtrl->GetEntryCount(); i++) - { - SvxIconChoiceCtrlEntry* pEntry = m_pIconCtrl->GetEntry( i ); - delete static_cast<sal_uInt16*>(pEntry->GetUserData()); - } - } - delete pRanges; pRanges = nullptr; delete pOutSet; commit 28e1f3c77fe19091cddf527f7758386dddcdad34 Author: Takeshi Abe <t...@fixedpoint.jp> Date: Sat Nov 18 22:43:41 2017 +0900 svl: Fix possible memleak at deleting DdeService Change-Id: Ie10d4199999c4331af29dee2a8d98132488caa6e Reviewed-on: https://gerrit.libreoffice.org/44909 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/include/svl/svdde.hxx b/include/svl/svdde.hxx index 003a14f83923..2f07eb768117 100644 --- a/include/svl/svdde.hxx +++ b/include/svl/svdde.hxx @@ -48,7 +48,7 @@ struct Conversation; typedef ::std::vector< DdeService* > DdeServices; typedef ::std::vector< long > DdeFormats; -typedef ::std::vector< Conversation* > ConvList; +typedef std::vector<std::unique_ptr<Conversation>> ConvList; class SVL_DLLPUBLIC DdeData @@ -297,7 +297,7 @@ private: DdeFormats aFormats; DdeTopic* pSysTopic; DdeString* pName; - ConvList* pConv; + ConvList m_vConv; short nStatus; SVL_DLLPRIVATE bool HasCbFormat( sal_uInt16 ); @@ -306,6 +306,9 @@ public: DdeService( SAL_UNUSED_PARAMETER const OUString& ); virtual ~DdeService(); + DdeService( const DdeService& ) = delete; + DdeService& operator= ( const DdeService& ) = delete; + const OUString GetName() const; short GetError() { return nStatus; } diff --git a/svl/source/svdde/ddeimp.hxx b/svl/source/svdde/ddeimp.hxx index 22df0864002e..3e6cf02483b4 100644 --- a/svl/source/svdde/ddeimp.hxx +++ b/svl/source/svdde/ddeimp.hxx @@ -37,8 +37,6 @@ struct Conversation DdeTopic* pTopic; }; -typedef ::std::vector< Conversation* > ConvList; - class DdeInternal { diff --git a/svl/source/svdde/ddesvr.cxx b/svl/source/svdde/ddesvr.cxx index ce26573988b4..45098bec4764 100644 --- a/svl/source/svdde/ddesvr.cxx +++ b/svl/source/svdde/ddesvr.cxx @@ -153,7 +153,7 @@ HDDEDATA CALLBACK DdeInternal::SvrCallback( pC = new Conversation; pC->hConv = hConv; pC->pTopic = pTopic; - pService->pConv->push_back( pC ); + pService->m_vConv.emplace_back( pC ); } } return nullptr; @@ -162,9 +162,9 @@ HDDEDATA CALLBACK DdeInternal::SvrCallback( for (DdeServices::iterator aI = rAll.begin(); aI != rAll.end(); ++aI) { pService = *aI; - for ( size_t i = 0, n = pService->pConv->size(); i < n; ++i ) + for ( size_t i = 0, n = pService->m_vConv.size(); i < n; ++i ) { - pC = (*pService->pConv)[ i ]; + pC = pService->m_vConv[ i ].get(); if ( pC->hConv == hConv ) goto found; } @@ -176,14 +176,13 @@ found: if ( nCode == XTYP_DISCONNECT) { DisconnectTopic(*pC->pTopic, hConv); - for ( ConvList::iterator it = pService->pConv->begin(); - it != pService->pConv->end(); + for ( ConvList::iterator it = pService->m_vConv.begin(); + it != pService->m_vConv.end(); ++it ) { - if ( *it == pC ) + if ( it->get() == pC ) { - delete *it; - pService->pConv->erase( it ); + pService->m_vConv.erase( it ); break; } } @@ -435,8 +434,6 @@ DdeService::DdeService( const OUString& rService ) else nStatus = DMLERR_NO_ERROR; - pConv = new ConvList; - if ( pInst->pServicesSvr ) pInst->pServicesSvr->push_back( this ); @@ -482,7 +479,6 @@ DdeService::~DdeService() ImpDeinitInstData(); } } - delete pConv; } const OUString DdeService::GetName() const @@ -513,16 +509,11 @@ void DdeService::RemoveTopic( const DdeTopic& rTopic ) aTopics.erase(iter); // Delete all conversions! // Or else we work on deleted topics! - for( size_t n = pConv->size(); n; ) + for( size_t n = m_vConv.size(); n; ) { - Conversation* pC = (*pConv)[ --n ]; + auto const& pC = m_vConv[ --n ]; if( pC->pTopic == &rTopic ) - { - ConvList::iterator it = pConv->begin(); - ::std::advance( it, n ); - delete *it; - pConv->erase( it ); - } + m_vConv.erase( m_vConv.begin() + n ); } break; } diff --git a/svl/unx/source/svdde/ddedummy.cxx b/svl/unx/source/svdde/ddedummy.cxx index 856d79dc5db2..e934b865a857 100644 --- a/svl/unx/source/svdde/ddedummy.cxx +++ b/svl/unx/source/svdde/ddedummy.cxx @@ -20,6 +20,10 @@ #include <svl/svdde.hxx> #include <rtl/instance.hxx> +struct Conversation +{ +}; + struct DdeDataImp { }; @@ -202,7 +206,6 @@ const OUString DdeTopic::GetName() const DdeService::DdeService( const OUString& ) : pSysTopic(nullptr) , pName(nullptr) - , pConv(nullptr) , nStatus(0) { } commit 67bd9382aa17594cb7a6d1fad304ed9f275941b1 Author: Takeshi Abe <t...@fixedpoint.jp> Date: Tue Dec 19 02:11:36 2017 +0900 svtools: Use std::unique_ptr for GraphicCacheEntry ... and GraphicDisplayCacheEntry. Change-Id: Ic4c4f6078837d96ce56e245caa926c7730034a08 Reviewed-on: https://gerrit.libreoffice.org/46732 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/svtools/source/graphic/grfcache.cxx b/svtools/source/graphic/grfcache.cxx index da41b631fc93..cd42a0aa289a 100644 --- a/svtools/source/graphic/grfcache.cxx +++ b/svtools/source/graphic/grfcache.cxx @@ -147,9 +147,9 @@ private: GraphicID maID; GfxLink maGfxLink; - BitmapEx* mpBmpEx; - GDIMetaFile* mpMtf; - Animation* mpAnimation; + std::unique_ptr<BitmapEx> mpBmpEx; + std::unique_ptr<GDIMetaFile> mpMtf; + std::unique_ptr<Animation> mpAnimation; bool mbSwappedAll; // VectorGraphicData support @@ -178,9 +178,6 @@ public: GraphicCacheEntry::GraphicCacheEntry( const GraphicObject& rObj ) : maID ( rObj ), - mpBmpEx ( nullptr ), - mpMtf ( nullptr ), - mpAnimation ( nullptr ), mbSwappedAll ( true ) { mbSwappedAll = !ImplInit( rObj ); @@ -193,10 +190,6 @@ GraphicCacheEntry::~GraphicCacheEntry() maGraphicObjectList.empty(), "GraphicCacheEntry::~GraphicCacheEntry(): Not all GraphicObjects are removed from this entry" ); - - delete mpBmpEx; - delete mpMtf; - delete mpAnimation; } bool GraphicCacheEntry::ImplInit( const GraphicObject& rObj ) @@ -207,23 +200,9 @@ bool GraphicCacheEntry::ImplInit( const GraphicObject& rObj ) { const Graphic& rGraphic = rObj.GetGraphic(); - if( mpBmpEx ) - { - delete mpBmpEx; - mpBmpEx = nullptr; - } - - if( mpMtf ) - { - delete mpMtf; - mpMtf = nullptr; - } - - if( mpAnimation ) - { - delete mpAnimation; - mpAnimation = nullptr; - } + mpBmpEx.reset(); + mpMtf.reset(); + mpAnimation.reset(); switch( rGraphic.GetType() ) { @@ -235,11 +214,11 @@ bool GraphicCacheEntry::ImplInit( const GraphicObject& rObj ) } else if( rGraphic.IsAnimated() ) { - mpAnimation = new Animation( rGraphic.GetAnimation() ); + mpAnimation.reset(new Animation( rGraphic.GetAnimation() )); } else { - mpBmpEx = new BitmapEx( rGraphic.GetBitmapEx() ); + mpBmpEx.reset(new BitmapEx( rGraphic.GetBitmapEx() )); if (rGraphic.getPdfData().hasElements()) maPdfData = rGraphic.getPdfData(); } @@ -248,7 +227,7 @@ bool GraphicCacheEntry::ImplInit( const GraphicObject& rObj ) case GraphicType::GdiMetafile: { - mpMtf = new GDIMetaFile( rGraphic.GetGDIMetaFile() ); + mpMtf.reset(new GDIMetaFile( rGraphic.GetGDIMetaFile() )); } break; @@ -375,12 +354,9 @@ void GraphicCacheEntry::GraphicObjectWasSwappedOut() if( !mbSwappedAll ) return; - delete mpBmpEx; - mpBmpEx = nullptr; - delete mpMtf; - mpMtf = nullptr; - delete mpAnimation; - mpAnimation = nullptr; + mpBmpEx.reset(); + mpMtf.reset(); + mpAnimation.reset(); // #119176# also reset VectorGraphicData maVectorGraphicData.reset(); @@ -399,8 +375,8 @@ private: ::salhelper::TTimeValue maReleaseTime; const GraphicCacheEntry* mpRefCacheEntry; - GDIMetaFile* mpMtf; - BitmapEx* mpBmpEx; + std::unique_ptr<GDIMetaFile> mpMtf; + std::unique_ptr<BitmapEx> mpBmpEx; GraphicAttr maAttr; Size maOutSizePix; sal_uLong mnCacheSize; @@ -425,7 +401,7 @@ public: const GraphicObject& rObj, const GraphicAttr& rAttr, const BitmapEx& rBmpEx ) : mpRefCacheEntry( pRefCacheEntry ), - mpMtf( nullptr ), mpBmpEx( new BitmapEx( rBmpEx ) ), + mpBmpEx( new BitmapEx( rBmpEx ) ), maAttr( rAttr ), maOutSizePix( pOut->LogicToPixel( rSz ) ), mnCacheSize( GetNeededSize( pOut, rPt, rSz, rObj, rAttr ) ), mnOutDevDrawMode( pOut->GetDrawMode() ), @@ -438,7 +414,7 @@ public: const GraphicObject& rObj, const GraphicAttr& rAttr, const GDIMetaFile& rMtf ) : mpRefCacheEntry( pRefCacheEntry ), - mpMtf( new GDIMetaFile( rMtf ) ), mpBmpEx( nullptr ), + mpMtf( new GDIMetaFile( rMtf ) ), maAttr( rAttr ), maOutSizePix( pOut->LogicToPixel( rSz ) ), mnCacheSize( GetNeededSize( pOut, rPt, rSz, rObj, rAttr ) ), mnOutDevDrawMode( pOut->GetDrawMode() ), @@ -447,8 +423,6 @@ public: } - ~GraphicDisplayCacheEntry(); - sal_uLong GetCacheSize() const { return mnCacheSize; } const GraphicCacheEntry* GetReferencedCacheEntry() const { return mpRefCacheEntry; } @@ -797,12 +771,6 @@ sal_uLong GraphicDisplayCacheEntry::GetNeededSize( OutputDevice const * pOut, co return rGraphic.GetSizeBytes(); } -GraphicDisplayCacheEntry::~GraphicDisplayCacheEntry() -{ - delete mpMtf; - delete mpBmpEx; -} - void GraphicDisplayCacheEntry::Draw( OutputDevice* pOut, const Point& rPt, const Size& rSz ) const { if( mpMtf ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits