From 62ddce422ce80592107d9125e8e9bd59f7f770a5 Mon Sep 17 00:00:00 2001 From: Xisco Fauli Date: Mon, 23 May 2016 01:53:33 +0200 Subject: tdf#89329: use unique_ptr for pImpl in xmlcnitm Change-Id: Iec37e509b78e58e90591bad26735ff31462eaf5c Reviewed-on: https://gerrit.libreoffice.org/25328 Tested-by: Jenkins Reviewed-by: Noel Grandin --- editeng/source/items/xmlcnitm.cxx | 18 ++++++++---------- include/editeng/xmlcnitm.hxx | 3 ++- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/editeng/source/items/xmlcnitm.cxx b/editeng/source/items/xmlcnitm.cxx index 0fe0bcedd360..6b4dca473634 100644 --- a/editeng/source/items/xmlcnitm.cxx +++ b/editeng/source/items/xmlcnitm.cxx @@ -30,28 +30,27 @@ using namespace ::com::sun::star::xml; SvXMLAttrContainerItem::SvXMLAttrContainerItem( sal_uInt16 _nWhich ) : - SfxPoolItem( _nWhich ) + SfxPoolItem( _nWhich ), + pImpl( new SvXMLAttrContainerData ) { - pImpl = new SvXMLAttrContainerData; } SvXMLAttrContainerItem::SvXMLAttrContainerItem( const SvXMLAttrContainerItem& rItem ) : - SfxPoolItem( rItem ) + SfxPoolItem( rItem ), + pImpl( new SvXMLAttrContainerData( *rItem.pImpl ) ) { - pImpl = new SvXMLAttrContainerData( *rItem.pImpl ); } SvXMLAttrContainerItem::~SvXMLAttrContainerItem() { - delete pImpl; } bool SvXMLAttrContainerItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( dynamic_cast< const SvXMLAttrContainerItem* >(&rItem) != nullptr, "SvXMLAttrContainerItem::operator ==(): Bad type"); - return *pImpl == *static_cast(rItem).pImpl; + return *pImpl.get() == *static_cast(rItem).pImpl.get(); } bool SvXMLAttrContainerItem::GetPresentation( @@ -73,7 +72,7 @@ sal_uInt16 SvXMLAttrContainerItem::GetVersion( sal_uInt16 /*nFileFormatVersion*/ bool SvXMLAttrContainerItem::QueryValue( css::uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) const { Reference xContainer = - new SvUnoAttributeContainer( new SvXMLAttrContainerData( *pImpl ) ); + new SvUnoAttributeContainer( new SvXMLAttrContainerData( *pImpl.get() ) ); rVal.setValue( &xContainer, cppu::UnoType::get()); return true; @@ -94,8 +93,7 @@ bool SvXMLAttrContainerItem::PutValue( const css::uno::Any& rVal, sal_uInt8 /*nM if( pContainer ) { - delete pImpl; - pImpl = new SvXMLAttrContainerData( * pContainer->GetContainerImpl() ); + pImpl.reset( new SvXMLAttrContainerData( * pContainer->GetContainerImpl() ) ); } else { @@ -147,7 +145,7 @@ bool SvXMLAttrContainerItem::PutValue( const css::uno::Any& rVal, sal_uInt8 /*nM } if( nAttr == nCount ) - pImpl = pNewImpl.release(); + pImpl.reset( pNewImpl.release() ); else return false; } diff --git a/include/editeng/xmlcnitm.hxx b/include/editeng/xmlcnitm.hxx index d6c584984d20..2ce157eb8dd4 100644 --- a/include/editeng/xmlcnitm.hxx +++ b/include/editeng/xmlcnitm.hxx @@ -22,6 +22,7 @@ #include #include +#include class SvXMLNamespaceMap; @@ -30,7 +31,7 @@ class SvXMLAttrContainerData; class EDITENG_DLLPUBLIC SvXMLAttrContainerItem: public SfxPoolItem { - SvXMLAttrContainerData *pImpl; + std::unique_ptr pImpl; public: -- cgit