From b586bfcff288151082f7d247b392c5640ae5c951 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Wed, 12 Dec 2018 15:11:48 +0200 Subject: use unique_ptr in checkForUniqueItem fixing a memory leak in chart2 Change-Id: Idddb6a46b1bde5c1a11148c03bbdaac20ac78e13 Reviewed-on: https://gerrit.libreoffice.org/65031 Tested-by: Jenkins Reviewed-by: Noel Grandin --- sd/source/ui/func/futempl.cxx | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) (limited to 'sd') diff --git a/sd/source/ui/func/futempl.cxx b/sd/source/ui/func/futempl.cxx index 3f281141c908..df2a92a8e415 100644 --- a/sd/source/ui/func/futempl.cxx +++ b/sd/source/ui/func/futempl.cxx @@ -439,71 +439,64 @@ void FuTemplate::DoExecute( SfxRequest& rReq ) if( rAttr.GetItemState( XATTR_FILLBITMAP ) == SfxItemState::SET ) { const SfxPoolItem* pOldItem = rAttr.GetItem( XATTR_FILLBITMAP ); - SfxPoolItem* pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); + std::unique_ptr pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); if( pNewItem ) { rAttr.Put( *pNewItem ); - delete pNewItem; } } if( rAttr.GetItemState( XATTR_LINEDASH ) == SfxItemState::SET ) { const SfxPoolItem* pOldItem = rAttr.GetItem( XATTR_LINEDASH ); - SfxPoolItem* pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); + std::unique_ptr pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); if( pNewItem ) { rAttr.Put( *pNewItem ); - delete pNewItem; } } if( rAttr.GetItemState( XATTR_LINESTART ) == SfxItemState::SET ) { const SfxPoolItem* pOldItem = rAttr.GetItem( XATTR_LINESTART ); - SfxPoolItem* pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); + std::unique_ptr pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); if( pNewItem ) { rAttr.Put( *pNewItem ); - delete pNewItem; } } if( rAttr.GetItemState( XATTR_LINEEND ) == SfxItemState::SET ) { const SfxPoolItem* pOldItem = rAttr.GetItem( XATTR_LINEEND ); - SfxPoolItem* pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); + std::unique_ptr pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); if( pNewItem ) { rAttr.Put( *pNewItem ); - delete pNewItem; } } if( rAttr.GetItemState( XATTR_FILLGRADIENT ) == SfxItemState::SET ) { const SfxPoolItem* pOldItem = rAttr.GetItem( XATTR_FILLGRADIENT ); - SfxPoolItem* pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); + std::unique_ptr pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); if( pNewItem ) { rAttr.Put( *pNewItem ); - delete pNewItem; } } if( rAttr.GetItemState( XATTR_FILLFLOATTRANSPARENCE ) == SfxItemState::SET ) { const SfxPoolItem* pOldItem = rAttr.GetItem( XATTR_FILLFLOATTRANSPARENCE ); - SfxPoolItem* pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); + std::unique_ptr pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); if( pNewItem ) { rAttr.Put( *pNewItem ); - delete pNewItem; } } if( rAttr.GetItemState( XATTR_FILLHATCH ) == SfxItemState::SET ) { const SfxPoolItem* pOldItem = rAttr.GetItem( XATTR_FILLHATCH ); - SfxPoolItem* pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); + std::unique_ptr pNewItem = static_cast(pOldItem)->checkForUniqueItem( mpDoc ); if( pNewItem ) { rAttr.Put( *pNewItem ); - delete pNewItem; } } -- cgit