[Libreoffice-commits] core.git: include/svl sc/source svl/source

Noel Grandin noel.grandin at collabora.co.uk
Thu Jan 11 13:50:43 UTC 2018


 include/svl/adrparse.hxx              |    4 -
 include/svl/instrm.hxx                |    3 -
 include/svl/itemiter.hxx              |    4 -
 include/svl/itemset.hxx               |    8 +--
 include/svl/languageoptions.hxx       |    5 +-
 include/svl/ondemand.hxx              |   19 ++-----
 include/svl/zforlist.hxx              |   10 ++--
 sc/source/core/data/patattr.cxx       |    4 -
 svl/source/config/languageoptions.cxx |    8 +--
 svl/source/fsstor/fsstorage.cxx       |   18 ++-----
 svl/source/items/itemiter.cxx         |    4 -
 svl/source/items/itemset.cxx          |   85 ++++++++++++++++------------------
 svl/source/items/stylepool.cxx        |   46 ++++++------------
 svl/source/misc/adrparse.cxx          |    6 --
 svl/source/misc/strmadpt.cxx          |    3 -
 svl/source/numbers/zforfind.cxx       |    6 --
 svl/source/numbers/zforfind.hxx       |    2 
 svl/source/numbers/zforlist.cxx       |   77 ++++++++++++++----------------
 svl/source/undo/undo.cxx              |    6 --
 19 files changed, 137 insertions(+), 181 deletions(-)

New commits:
commit ccf986a77a4b218964033e70601ae220eb2c9b13
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Jan 10 14:54:10 2018 +0200

    loplugin:useuniqueptr in svl
    
    Change-Id: I2fdb63517349474d90cb17ad2bd667f30840e83d
    Reviewed-on: https://gerrit.libreoffice.org/47727
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/include/svl/adrparse.hxx b/include/svl/adrparse.hxx
index 2213e26c66f5..0961158a52e7 100644
--- a/include/svl/adrparse.hxx
+++ b/include/svl/adrparse.hxx
@@ -47,7 +47,7 @@ class SVL_DLLPUBLIC SvAddressParser
     friend class SvAddressParser_Impl;
 
     SvAddressEntry_Impl m_aFirst;
-    ::std::vector< SvAddressEntry_Impl* >
+    ::std::vector< SvAddressEntry_Impl >
                         m_aRest;
     bool                m_bHasFirst;
 
@@ -61,7 +61,7 @@ public:
     const OUString& GetEmailAddress(sal_Int32 nIndex) const
     {
         return nIndex == 0 ? m_aFirst.m_aAddrSpec :
-                             m_aRest[ nIndex - 1 ]->m_aAddrSpec;
+                             m_aRest[ nIndex - 1 ].m_aAddrSpec;
     }
 };
 
diff --git a/include/svl/instrm.hxx b/include/svl/instrm.hxx
index c8c914546e45..21e8ea6c3c2d 100644
--- a/include/svl/instrm.hxx
+++ b/include/svl/instrm.hxx
@@ -23,6 +23,7 @@
 #include <svl/svldllapi.h>
 #include <com/sun/star/uno/Reference.h>
 #include <tools/stream.hxx>
+#include <memory>
 
 namespace com { namespace sun { namespace star { namespace io {
     class XInputStream;
@@ -36,7 +37,7 @@ class SVL_DLLPUBLIC SvInputStream: public SvStream
 {
     css::uno::Reference< css::io::XInputStream >   m_xStream;
     css::uno::Reference< css::io::XSeekable >      m_xSeekable;
-    SvDataPipe_Impl *                              m_pPipe;
+    std::unique_ptr<SvDataPipe_Impl>               m_pPipe;
     sal_uInt64                                     m_nSeekedFrom;
 
     SVL_DLLPRIVATE bool open();
diff --git a/include/svl/itemiter.hxx b/include/svl/itemiter.hxx
index aba136d2aa85..08aef0ea4f66 100644
--- a/include/svl/itemiter.hxx
+++ b/include/svl/itemiter.hxx
@@ -41,11 +41,11 @@ public:
     const SfxPoolItem* FirstItem()
     {
         m_nCurrent = m_nStart;
-        return m_rSet.m_nCount ? *(m_rSet.m_pItems + m_nCurrent) : nullptr;
+        return m_rSet.m_nCount ? *(m_rSet.m_pItems.get() + m_nCurrent) : nullptr;
     }
     const SfxPoolItem* GetCurItem() const
     {
-        return m_rSet.m_nCount ? *(m_rSet.m_pItems + m_nCurrent) : nullptr;
+        return m_rSet.m_nCount ? *(m_rSet.m_pItems.get() + m_nCurrent) : nullptr;
     }
     const SfxPoolItem* NextItem();
 
diff --git a/include/svl/itemset.hxx b/include/svl/itemset.hxx
index ca944d282ad4..d5a2b5eb5ad7 100644
--- a/include/svl/itemset.hxx
+++ b/include/svl/itemset.hxx
@@ -25,6 +25,7 @@
 #include <cstddef>
 #include <initializer_list>
 #include <type_traits>
+#include <memory>
 
 #include <svl/svldllapi.h>
 #include <svl/poolitem.hxx>
@@ -34,8 +35,6 @@ class SfxItemPool;
 class SfxPoolItem;
 class SvStream;
 
-typedef SfxPoolItem const** SfxItemArray;
-
 namespace svl {
 
 namespace detail {
@@ -84,7 +83,8 @@ class SAL_WARN_UNUSED SVL_DLLPUBLIC SfxItemSet
 
     SfxItemPool*      m_pPool;         ///< pool that stores the items
     const SfxItemSet* m_pParent;       ///< derivation
-    SfxItemArray      m_pItems;        ///< array of items
+    std::unique_ptr<SfxPoolItem const*[]>
+                      m_pItems;        ///< array of items
     sal_uInt16*       m_pWhichRanges;  ///< array of Which Ranges
     sal_uInt16        m_nCount;        ///< number of items
 
@@ -99,7 +99,7 @@ private:
         std::size_t items);
 
 public:
-    SfxItemArray                GetItems_Impl() const { return m_pItems; }
+    SfxPoolItem const**         GetItems_Impl() const { return m_pItems.get(); }
 
 private:
     const SfxItemSet&           operator=(const SfxItemSet &) = delete;
diff --git a/include/svl/languageoptions.hxx b/include/svl/languageoptions.hxx
index 6de8eb566c5b..fadd74f08893 100644
--- a/include/svl/languageoptions.hxx
+++ b/include/svl/languageoptions.hxx
@@ -25,6 +25,7 @@
 #include <unotools/options.hxx>
 #include <i18nlangtag/lang.h>
 #include <o3tl/typed_flags_set.hxx>
+#include <memory>
 
 // class SvtLanguageOptions ----------------------------------------------------
 
@@ -49,8 +50,8 @@ class SvtCTLOptions;
 class SVL_DLLPUBLIC SvtLanguageOptions : public ::utl::detail::Options
 {
 private:
-    SvtCJKOptions*  m_pCJKOptions;
-    SvtCTLOptions*  m_pCTLOptions;
+    std::unique_ptr<SvtCJKOptions>  m_pCJKOptions;
+    std::unique_ptr<SvtCTLOptions>  m_pCTLOptions;
 
 public:
     enum EOption
diff --git a/include/svl/ondemand.hxx b/include/svl/ondemand.hxx
index a66b4aa4ef77..47fe95de4236 100644
--- a/include/svl/ondemand.hxx
+++ b/include/svl/ondemand.hxx
@@ -60,26 +60,19 @@ class OnDemandLocaleDataWrapper
             LanguageType        eCurrentLanguage;
             LanguageType        eLastAnyLanguage;
     const   LocaleDataWrapper*  pSystem;
-    const   LocaleDataWrapper*  pEnglish;
-            LocaleDataWrapper*  pAny;
+    std::unique_ptr<const LocaleDataWrapper>  pEnglish;
+    std::unique_ptr<      LocaleDataWrapper>  pAny;
     const   LocaleDataWrapper*  pCurrent;
             bool                bInitialized;
 
 public:
                                 OnDemandLocaleDataWrapper()
                                     : eLastAnyLanguage( LANGUAGE_DONTKNOW )
-                                    , pEnglish(nullptr)
-                                    , pAny(nullptr)
                                     , bInitialized(false)
                                     {
                                         pCurrent = pSystem = aSysLocale.GetLocaleDataPtr();
                                         eCurrentLanguage = LANGUAGE_SYSTEM;
                                     }
-                                ~OnDemandLocaleDataWrapper()
-                                    {
-                                        delete pEnglish;
-                                        delete pAny;
-                                    }
 
             bool                isInitialized() const   { return bInitialized; }
 
@@ -101,14 +94,14 @@ public:
                                         else if ( eLang == LANGUAGE_ENGLISH_US )
                                         {
                                                 if ( !pEnglish )
-                                                    pEnglish = new LocaleDataWrapper( m_xContext, rLanguageTag );
-                                                pCurrent = pEnglish;
+                                                    pEnglish.reset( new LocaleDataWrapper( m_xContext, rLanguageTag ) );
+                                                pCurrent = pEnglish.get();
                                         }
                                         else
                                         {
                                             if ( !pAny )
                                             {
-                                                pAny = new LocaleDataWrapper( m_xContext, rLanguageTag );
+                                                pAny.reset( new LocaleDataWrapper( m_xContext, rLanguageTag ) );
                                                 eLastAnyLanguage = eLang;
                                             }
                                             else if ( eLastAnyLanguage != eLang )
@@ -116,7 +109,7 @@ public:
                                                 pAny->setLanguageTag( rLanguageTag );
                                                 eLastAnyLanguage = eLang;
                                             }
-                                            pCurrent = pAny;
+                                            pCurrent = pAny.get();
                                         }
                                         eCurrentLanguage = eLang;
                                     }
diff --git a/include/svl/zforlist.hxx b/include/svl/zforlist.hxx
index 6e7d196c2a61..e82d68072c75 100644
--- a/include/svl/zforlist.hxx
+++ b/include/svl/zforlist.hxx
@@ -887,15 +887,15 @@ private:
     std::map<sal_uInt32, std::unique_ptr<SvNumberformat>> aFTable;            // Table of format keys to format entries
     typedef std::map<sal_uInt32, sal_uInt32> DefaultFormatKeysMap;
     DefaultFormatKeysMap aDefaultFormatKeys; // Table of default standard to format keys
-    SvNumberFormatTable* pFormatTable;      // For the UI dialog
-    SvNumberFormatterIndexTable* pMergeTable;               // List of indices for merging two formatters
-    CharClass* pCharClass;                  // CharacterClassification
+    std::unique_ptr<SvNumberFormatTable> pFormatTable;      // For the UI dialog
+    std::unique_ptr<SvNumberFormatterIndexTable> pMergeTable; // List of indices for merging two formatters
+    std::unique_ptr<CharClass> pCharClass;                  // CharacterClassification
     OnDemandLocaleDataWrapper xLocaleData;  // LocaleData switched between SYSTEM, ENGLISH and other
     OnDemandTransliterationWrapper xTransliteration;    // Transliteration loaded on demand
     OnDemandCalendarWrapper xCalendar;      // Calendar loaded on demand
     OnDemandNativeNumberWrapper xNatNum;    // Native number service loaded on demand
-    ImpSvNumberInputScan* pStringScanner;   // Input string scanner
-    ImpSvNumberformatScan* pFormatScanner;  // Format code string scanner
+    std::unique_ptr<ImpSvNumberInputScan> pStringScanner;   // Input string scanner
+    std::unique_ptr<ImpSvNumberformatScan> pFormatScanner;  // Format code string scanner
     Link<sal_uInt16,Color*> aColorLink;     // User defined color table CallBack
     sal_uInt32 MaxCLOffset;                     // Max language/country offset used
     sal_uInt32 nDefaultSystemCurrencyFormat;        // NewCurrency matching SYSTEM locale
diff --git a/sc/source/core/data/patattr.cxx b/sc/source/core/data/patattr.cxx
index 86aec0b7d450..05afb0a14c85 100644
--- a/sc/source/core/data/patattr.cxx
+++ b/sc/source/core/data/patattr.cxx
@@ -129,8 +129,8 @@ inline bool EqualPatternSets( const SfxItemSet& rSet1, const SfxItemSet& rSet2 )
     if ( rSet1.Count() != rSet2.Count() )
         return false;
 
-    SfxItemArray pItems1 = rSet1.GetItems_Impl();   // inline method of SfxItemSet
-    SfxItemArray pItems2 = rSet2.GetItems_Impl();
+    SfxPoolItem const ** pItems1 = rSet1.GetItems_Impl();   // inline method of SfxItemSet
+    SfxPoolItem const ** pItems2 = rSet2.GetItems_Impl();
 
     return ( 0 == memcmp( pItems1, pItems2, (ATTR_PATTERN_END - ATTR_PATTERN_START + 1) * sizeof(pItems1[0]) ) );
 }
diff --git a/svl/source/config/languageoptions.cxx b/svl/source/config/languageoptions.cxx
index 74af0313c775..abf5729fd56d 100644
--- a/svl/source/config/languageoptions.cxx
+++ b/svl/source/config/languageoptions.cxx
@@ -45,8 +45,8 @@ SvtLanguageOptions::SvtLanguageOptions( bool _bDontLoad )
     // Global access, must be guarded (multithreading)
     ::osl::MutexGuard aGuard( ALMutex::get() );
 
-    m_pCJKOptions = new SvtCJKOptions( _bDontLoad );
-    m_pCTLOptions = new SvtCTLOptions( _bDontLoad );
+    m_pCJKOptions.reset(new SvtCJKOptions( _bDontLoad ));
+    m_pCTLOptions.reset(new SvtCTLOptions( _bDontLoad ));
     m_pCTLOptions->AddListener(this);
     m_pCJKOptions->AddListener(this);
 }
@@ -58,8 +58,8 @@ SvtLanguageOptions::~SvtLanguageOptions()
     m_pCTLOptions->RemoveListener(this);
     m_pCJKOptions->RemoveListener(this);
 
-    delete m_pCJKOptions;
-    delete m_pCTLOptions;
+    m_pCJKOptions.reset();
+    m_pCTLOptions.reset();
 }
 // CJK options
 bool SvtLanguageOptions::IsCJKFontEnabled() const
diff --git a/svl/source/fsstor/fsstorage.cxx b/svl/source/fsstor/fsstorage.cxx
index a4bfba7d192e..c899bfe357c4 100644
--- a/svl/source/fsstor/fsstorage.cxx
+++ b/svl/source/fsstor/fsstorage.cxx
@@ -72,8 +72,8 @@ struct FSStorage_Impl
     ::ucbhelper::Content m_aContent;
     sal_Int32 m_nMode;
 
-    ::comphelper::OInterfaceContainerHelper2* m_pListenersContainer; // list of listeners
-    ::cppu::OTypeCollection* m_pTypeCollection;
+    std::unique_ptr<::comphelper::OInterfaceContainerHelper2> m_pListenersContainer; // list of listeners
+    std::unique_ptr<::cppu::OTypeCollection> m_pTypeCollection;
 
     uno::Reference< uno::XComponentContext > m_xContext;
 
@@ -89,19 +89,11 @@ struct FSStorage_Impl
         OSL_ENSURE( !m_aURL.isEmpty(), "The URL must not be empty" );
     }
 
-    ~FSStorage_Impl();
-
     // Copy assignment is forbidden and not implemented.
     FSStorage_Impl (const FSStorage_Impl &) = delete;
     FSStorage_Impl & operator= (const FSStorage_Impl &) = delete;
 };
 
-FSStorage_Impl::~FSStorage_Impl()
-{
-    delete m_pListenersContainer;
-    delete m_pTypeCollection;
-}
-
 FSStorage::FSStorage( const ::ucbhelper::Content& aContent,
                     sal_Int32 nMode,
                     uno::Reference< uno::XComponentContext > const & xContext )
@@ -276,11 +268,11 @@ uno::Sequence< uno::Type > SAL_CALL FSStorage::getTypes()
 
         if ( m_pImpl->m_pTypeCollection == nullptr )
         {
-            m_pImpl->m_pTypeCollection = new ::cppu::OTypeCollection
+            m_pImpl->m_pTypeCollection.reset(new ::cppu::OTypeCollection
                                 (   cppu::UnoType<lang::XTypeProvider>::get()
                                 ,   cppu::UnoType<embed::XStorage>::get()
                                 ,   cppu::UnoType<embed::XHierarchicalStorageAccess>::get()
-                                ,   cppu::UnoType<beans::XPropertySet>::get());
+                                ,   cppu::UnoType<beans::XPropertySet>::get()) );
         }
     }
 
@@ -1056,7 +1048,7 @@ void SAL_CALL FSStorage::addEventListener(
         throw lang::DisposedException();
 
     if ( !m_pImpl->m_pListenersContainer )
-        m_pImpl->m_pListenersContainer = new ::comphelper::OInterfaceContainerHelper2( m_aMutex );
+        m_pImpl->m_pListenersContainer.reset(new ::comphelper::OInterfaceContainerHelper2( m_aMutex ));
 
     m_pImpl->m_pListenersContainer->addInterface( xListener );
 }
diff --git a/svl/source/items/itemiter.cxx b/svl/source/items/itemiter.cxx
index a42a90bc2358..2cc6ae36212d 100644
--- a/svl/source/items/itemiter.cxx
+++ b/svl/source/items/itemiter.cxx
@@ -32,7 +32,7 @@ SfxItemIter::SfxItemIter( const SfxItemSet& rItemSet )
     }
     else
     {
-        SfxItemArray ppFnd = m_rSet.m_pItems;
+        SfxPoolItem const** ppFnd = m_rSet.m_pItems.get();
 
         // Find the first Item that is set
         for (m_nStart = 0; !*(ppFnd + m_nStart ); ++m_nStart)
@@ -53,7 +53,7 @@ SfxItemIter::~SfxItemIter()
 
 const SfxPoolItem* SfxItemIter::NextItem()
 {
-    SfxItemArray ppFnd = m_rSet.m_pItems;
+    SfxPoolItem const** ppFnd = m_rSet.m_pItems.get();
 
     if (m_nCurrent < m_nEnd)
     {
diff --git a/svl/source/items/itemset.cxx b/svl/source/items/itemset.cxx
index 7e99dfa098fb..3c0bfa79aec3 100644
--- a/svl/source/items/itemset.cxx
+++ b/svl/source/items/itemset.cxx
@@ -98,7 +98,7 @@ SfxItemSet::SfxItemSet(SfxItemPool& rPool)
         m_pPool->FillItemIdRanges_Impl( m_pWhichRanges );
 
     const sal_uInt16 nSize = TotalCount();
-    m_pItems = new const SfxPoolItem*[nSize]{};
+    m_pItems.reset(new const SfxPoolItem*[nSize]{});
 }
 
 void SfxItemSet::InitRanges_Impl(const sal_uInt16 *pWhichPairTable)
@@ -111,7 +111,7 @@ void SfxItemSet::InitRanges_Impl(const sal_uInt16 *pWhichPairTable)
         pPtr += 2;
     }
 
-    m_pItems = new const SfxPoolItem*[nCnt]{};
+    m_pItems.reset( new const SfxPoolItem*[nCnt]{} );
 
     std::ptrdiff_t cnt = pPtr - pWhichPairTable +1;
     m_pWhichRanges = new sal_uInt16[ cnt ];
@@ -161,7 +161,7 @@ SfxItemSet::SfxItemSet(
 #endif
     }
     m_pWhichRanges[i] = 0;
-    m_pItems = new SfxPoolItem const *[size]{};
+    m_pItems.reset( new SfxPoolItem const *[size]{} );
 }
 
 SfxItemSet::SfxItemSet( SfxItemPool& rPool, const sal_uInt16* pWhichPairTable )
@@ -190,10 +190,11 @@ SfxItemSet::SfxItemSet( const SfxItemSet& rASet )
         pPtr += 2;
     }
 
-    m_pItems = new const SfxPoolItem* [ nCnt ];
+    m_pItems.reset( new const SfxPoolItem* [ nCnt ] );
 
     // Copy attributes
-    SfxItemArray ppDst = m_pItems, ppSrc = rASet.m_pItems;
+    SfxPoolItem const** ppDst = m_pItems.get();
+    SfxPoolItem const** ppSrc = rASet.m_pItems.get();
     for( sal_uInt16 n = nCnt; n; --n, ++ppDst, ++ppSrc )
         if ( nullptr == *ppSrc ||                 // Current Default?
              IsInvalidItem(*ppSrc) ||       // DontCare?
@@ -223,7 +224,7 @@ SfxItemSet::~SfxItemSet()
     sal_uInt16 nCount = TotalCount();
     if( Count() )
     {
-        SfxItemArray ppFnd = m_pItems;
+        SfxPoolItem const** ppFnd = m_pItems.get();
         for( sal_uInt16 nCnt = nCount; nCnt; --nCnt, ++ppFnd )
             if( *ppFnd && !IsInvalidItem(*ppFnd) )
             {
@@ -241,7 +242,7 @@ SfxItemSet::~SfxItemSet()
             }
     }
 
-    delete[] m_pItems;
+    m_pItems.reset();
     if (m_pWhichRanges != m_pPool->GetFrozenIdRanges())
         delete[] m_pWhichRanges;
     m_pWhichRanges = nullptr; // for invariant-testing
@@ -256,7 +257,7 @@ sal_uInt16 SfxItemSet::ClearItem( sal_uInt16 nWhich )
         return 0;
 
     sal_uInt16 nDel = 0;
-    SfxItemArray ppFnd = m_pItems;
+    SfxPoolItem const** ppFnd = m_pItems.get();
 
     if( nWhich )
     {
@@ -347,7 +348,7 @@ sal_uInt16 SfxItemSet::ClearItem( sal_uInt16 nWhich )
 void SfxItemSet::ClearInvalidItems()
 {
     sal_uInt16* pPtr = m_pWhichRanges;
-    SfxItemArray ppFnd = m_pItems;
+    SfxPoolItem const** ppFnd = m_pItems.get();
     while( *pPtr )
     {
         for( sal_uInt16 nWhich = *pPtr; nWhich <= *(pPtr+1); ++nWhich, ++ppFnd )
@@ -364,7 +365,7 @@ void SfxItemSet::InvalidateAllItems()
 {
     assert( !m_nCount && "There are still Items set" );
     m_nCount = TotalCount();
-    memset(static_cast<void*>(m_pItems), -1, m_nCount * sizeof(SfxPoolItem*));
+    memset(static_cast<void*>(m_pItems.get()), -1, m_nCount * sizeof(SfxPoolItem*));
 }
 
 SfxItemState SfxItemSet::GetItemState( sal_uInt16 nWhich,
@@ -376,7 +377,7 @@ SfxItemState SfxItemSet::GetItemState( sal_uInt16 nWhich,
     SfxItemState eRet = SfxItemState::UNKNOWN;
     do
     {
-        SfxItemArray ppFnd = pAktSet->m_pItems;
+        SfxPoolItem const** ppFnd = pAktSet->m_pItems.get();
         const sal_uInt16* pPtr = pAktSet->m_pWhichRanges;
         if (pPtr)
         {
@@ -428,7 +429,7 @@ const SfxPoolItem* SfxItemSet::Put( const SfxPoolItem& rItem, sal_uInt16 nWhich
     if ( !nWhich )
         return nullptr; //FIXME: Only because of Outliner bug
 
-    SfxItemArray ppFnd = m_pItems;
+    SfxPoolItem const** ppFnd = m_pItems.get();
     const sal_uInt16* pPtr = m_pWhichRanges;
     while( *pPtr )
     {
@@ -511,7 +512,7 @@ bool SfxItemSet::Put( const SfxItemSet& rSet, bool bInvalidAsDefault )
     bool bRet = false;
     if( rSet.Count() )
     {
-        SfxItemArray ppFnd = rSet.m_pItems;
+        SfxPoolItem const** ppFnd = rSet.m_pItems.get();
         const sal_uInt16* pPtr = rSet.m_pWhichRanges;
         while ( *pPtr )
         {
@@ -559,7 +560,7 @@ void SfxItemSet::PutExtended
 )
 {
     // don't "optimize" with "if( rSet.Count()" because of dont-care + defaults
-    SfxItemArray ppFnd = rSet.m_pItems;
+    SfxPoolItem const** ppFnd = rSet.m_pItems.get();
     const sal_uInt16* pPtr = rSet.m_pWhichRanges;
     while ( *pPtr )
     {
@@ -709,7 +710,7 @@ void SfxItemSet::SetRanges( const sal_uInt16 *pNewRanges )
 
     // create new item-array (by iterating through all new ranges)
     sal_uInt16   nSize = Capacity_Impl(pNewRanges);
-    SfxItemArray aNewItems = new const SfxPoolItem* [ nSize ];
+    SfxPoolItem const** aNewItems = new const SfxPoolItem* [ nSize ];
     sal_uInt16 nNewCount = 0;
     if (m_nCount == 0)
         memset( aNewItems, 0, nSize * sizeof( SfxPoolItem* ) );
@@ -758,8 +759,7 @@ void SfxItemSet::SetRanges( const sal_uInt16 *pNewRanges )
     }
 
     // replace old items-array and ranges
-    delete[] m_pItems;
-    m_pItems = aNewItems;
+    m_pItems.reset( aNewItems );
     m_nCount = nNewCount;
 
     if( pNewRanges == GetPool()->GetFrozenIdRanges() )
@@ -857,7 +857,7 @@ const SfxPoolItem& SfxItemSet::Get( sal_uInt16 nWhich, bool bSrchInParent) const
     {
         if( pAktSet->Count() )
         {
-            SfxItemArray ppFnd = pAktSet->m_pItems;
+            SfxPoolItem const** ppFnd = pAktSet->m_pItems.get();
             const sal_uInt16* pPtr = pAktSet->m_pWhichRanges;
             while( *pPtr )
             {
@@ -953,8 +953,8 @@ void SfxItemSet::Intersect( const SfxItemSet& rSet )
     // If the Ranges are identical, we can easily process it
     if( bEqual )
     {
-        SfxItemArray ppFnd1 = m_pItems;
-        SfxItemArray ppFnd2 = rSet.m_pItems;
+        SfxPoolItem const** ppFnd1 = m_pItems.get();
+        SfxPoolItem const** ppFnd2 = rSet.m_pItems.get();
 
         for( ; nSize; --nSize, ++ppFnd1, ++ppFnd2 )
             if( *ppFnd1 && !*ppFnd2 )
@@ -1019,8 +1019,8 @@ void SfxItemSet::Differentiate( const SfxItemSet& rSet )
     // If the Ranges are identical, we can easily process it
     if( bEqual )
     {
-        SfxItemArray ppFnd1 = m_pItems;
-        SfxItemArray ppFnd2 = rSet.m_pItems;
+        SfxPoolItem const** ppFnd1 = m_pItems.get();
+        SfxPoolItem const** ppFnd2 = rSet.m_pItems.get();
 
         for( ; nSize; --nSize, ++ppFnd1, ++ppFnd2 )
             if( *ppFnd1 && *ppFnd2 )
@@ -1229,8 +1229,8 @@ void SfxItemSet::MergeValues( const SfxItemSet& rSet )
     // If the Ranges match, they are easier to process!
     if( bEqual )
     {
-        SfxItemArray ppFnd1 = m_pItems;
-        SfxItemArray ppFnd2 = rSet.m_pItems;
+        SfxPoolItem const** ppFnd1 = m_pItems.get();
+        SfxPoolItem const** ppFnd2 = rSet.m_pItems.get();
 
         for( ; nSize; --nSize, ++ppFnd1, ++ppFnd2 )
             MergeItem_Impl(m_pPool, m_nCount, ppFnd1, *ppFnd2, false/*bIgnoreDefaults*/);
@@ -1259,7 +1259,7 @@ void SfxItemSet::MergeValues( const SfxItemSet& rSet )
 
 void SfxItemSet::MergeValue( const SfxPoolItem& rAttr, bool bIgnoreDefaults )
 {
-    SfxItemArray ppFnd = m_pItems;
+    SfxPoolItem const** ppFnd = m_pItems.get();
     const sal_uInt16* pPtr = m_pWhichRanges;
     const sal_uInt16 nWhich = rAttr.Which();
     while( *pPtr )
@@ -1278,7 +1278,7 @@ void SfxItemSet::MergeValue( const SfxPoolItem& rAttr, bool bIgnoreDefaults )
 
 void SfxItemSet::InvalidateItem( sal_uInt16 nWhich )
 {
-    SfxItemArray ppFnd = m_pItems;
+    SfxPoolItem const** ppFnd = m_pItems.get();
     const sal_uInt16* pPtr = m_pWhichRanges;
     while( *pPtr )
     {
@@ -1374,12 +1374,12 @@ bool SfxItemSet::Equals(const SfxItemSet &rCmp, bool bComparePool) const
     }
 
     // Are all pointers the same?
-    if (0 == memcmp( m_pItems, rCmp.m_pItems, nCount1 * sizeof(m_pItems[0]) ))
+    if (0 == memcmp( m_pItems.get(), rCmp.m_pItems.get(), nCount1 * sizeof(m_pItems[0]) ))
         return true;
 
     // We need to compare each one separately then
-    const SfxPoolItem **ppItem1 = m_pItems;
-    const SfxPoolItem **ppItem2 = rCmp.m_pItems;
+    const SfxPoolItem **ppItem1 = m_pItems.get();
+    const SfxPoolItem **ppItem2 = rCmp.m_pItems.get();
     for ( sal_uInt16 nPos = 0; nPos < nCount1; ++nPos )
     {
         // If the pointers of the poolable Items are not the same, the Items
@@ -1425,7 +1425,7 @@ SfxItemSet *SfxItemSet::Clone(bool bItems, SfxItemPool *pToPool ) const
 
 void SfxItemSet::PutDirect(const SfxPoolItem &rItem)
 {
-    SfxItemArray ppFnd = m_pItems;
+    SfxPoolItem const** ppFnd = m_pItems.get();
     const sal_uInt16* pPtr = m_pWhichRanges;
     const sal_uInt16 nWhich = rItem.Which();
 #ifdef DBG_UTIL
@@ -1537,31 +1537,28 @@ static sal_uInt16 *AddRanges_Impl(
  *
  * @returns the new ItemArray (the old 'pItems' is freed)
  */
-static SfxItemArray AddItem_Impl(SfxItemArray pItems, sal_uInt16 nOldSize, sal_uInt16 nPos)
+static void AddItem_Impl(std::unique_ptr<SfxPoolItem const*[]> & rpItems, sal_uInt16 nOldSize, sal_uInt16 nPos)
 {
     // Create new ItemArray
-    SfxItemArray pNew = new const SfxPoolItem*[nOldSize+1];
+    SfxPoolItem const** pNew = new const SfxPoolItem*[nOldSize+1];
 
     // Was there one before?
-    if ( pItems )
+    if ( rpItems )
     {
         // Copy all Items before nPos
         if ( nPos )
-            memcpy( static_cast<void*>(pNew), pItems, nPos * sizeof(SfxPoolItem *) );
+            memcpy( static_cast<void*>(pNew), rpItems.get(), nPos * sizeof(SfxPoolItem *) );
 
         // Copy all Items after nPos
         if ( nPos < nOldSize )
-            memcpy( static_cast<void*>(pNew + nPos + 1), pItems + nPos,
+            memcpy( static_cast<void*>(pNew + nPos + 1), rpItems.get() + nPos,
                     (nOldSize-nPos) * sizeof(SfxPoolItem *) );
     }
 
     // Initialize new Item
     *(pNew + nPos) = nullptr;
 
-    // Free old ItemArray
-    delete[] pItems;
-
-    return pNew;
+    rpItems.reset(pNew);
 }
 
 /**
@@ -1606,7 +1603,7 @@ const SfxPoolItem* SfxAllItemSet::Put( const SfxPoolItem& rItem, sal_uInt16 nWhi
                 (*pPtr)--;
 
                 // Make room before first Item of this Range
-                m_pItems = AddItem_Impl(m_pItems, nItemCount, nPos);
+                AddItem_Impl(m_pItems, nItemCount, nPos);
                 break;
             }
 
@@ -1618,7 +1615,7 @@ const SfxPoolItem* SfxAllItemSet::Put( const SfxPoolItem& rItem, sal_uInt16 nWhi
 
                 // Make room after last Item of this Range
                 nPos += nWhich - *pPtr;
-                m_pItems = AddItem_Impl(m_pItems, nItemCount, nPos);
+                AddItem_Impl(m_pItems, nItemCount, nPos);
                 break;
             }
 
@@ -1649,7 +1646,7 @@ const SfxPoolItem* SfxAllItemSet::Put( const SfxPoolItem& rItem, sal_uInt16 nWhi
 
         // Expand ItemArray
         nPos = nItemCount;
-        m_pItems = AddItem_Impl(m_pItems, nItemCount, nPos);
+        AddItem_Impl(m_pItems, nItemCount, nPos);
     }
 
     // Add new Item to Pool
@@ -1657,7 +1654,7 @@ const SfxPoolItem* SfxAllItemSet::Put( const SfxPoolItem& rItem, sal_uInt16 nWhi
 
     // Remember old Item
     bool bIncrementCount = false;
-    const SfxPoolItem* pOld = *( m_pItems + nPos );
+    const SfxPoolItem* pOld = m_pItems[nPos];
     if ( IsInvalidItem(pOld) ) // state "dontcare"
         pOld = nullptr;
     if ( !pOld )
@@ -1671,7 +1668,7 @@ const SfxPoolItem* SfxAllItemSet::Put( const SfxPoolItem& rItem, sal_uInt16 nWhi
     }
 
     // Add new Item to ItemSet
-    *(m_pItems + nPos) = &rNew;
+    m_pItems[nPos] = &rNew;
 
     // Send Changed Notification
     if ( pOld )
diff --git a/svl/source/items/stylepool.cxx b/svl/source/items/stylepool.cxx
index 04d801c3ac5b..6e52248eb82a 100644
--- a/svl/source/items/stylepool.cxx
+++ b/svl/source/items/stylepool.cxx
@@ -33,11 +33,11 @@ namespace {
      */
     class Node
     {
-        std::vector<Node*> mChildren; // child nodes, create by findChildNode(..)
+        std::vector<std::unique_ptr<Node>> mChildren; // child nodes, create by findChildNode(..)
         // container of shared pointers of inserted item sets; for non-poolable
         // items more than one item set is needed
         std::vector< std::shared_ptr<SfxItemSet> > maItemSet;
-        const SfxPoolItem *mpItem;   // my pool item
+        std::unique_ptr<const SfxPoolItem> mpItem;   // my pool item
         Node *mpUpper;               // if I'm a child node that's my parent node
         // #i86923#
         const bool mbIsItemIgnorable;
@@ -57,7 +57,6 @@ namespace {
               mpUpper( pParent ),
               mbIsItemIgnorable( bIgnorable )
         {}
-        ~Node();
         // #i86923#
         bool hasItemSet( const bool bCheckUsage ) const;
         // #i87808#
@@ -127,18 +126,15 @@ namespace {
     Node* Node::findChildNode( const SfxPoolItem& rItem,
                                const bool bIsItemIgnorable )
     {
-        Node* pNextNode = this;
-        std::vector<Node*>::const_iterator aIter = mChildren.begin();
-        while( aIter != mChildren.end() )
+        for( auto const & rChild : mChildren )
         {
-            if( rItem.Which() == (*aIter)->mpItem->Which() &&
-                rItem == *(*aIter)->mpItem )
-                return *aIter;
-            ++aIter;
+            if( rItem.Which() == rChild->mpItem->Which() &&
+                rItem == *rChild->mpItem )
+                return rChild.get();
         }
         // #i86923#
-        pNextNode = new Node( rItem, pNextNode, bIsItemIgnorable );
-        mChildren.push_back( pNextNode );
+        auto pNextNode = new Node( rItem, this, bIsItemIgnorable );
+        mChildren.emplace_back( pNextNode );
         return pNextNode;
     }
 
@@ -164,12 +160,13 @@ namespace {
                              const bool bSkipIgnorable )
     {
         // Searching downstairs
-        std::vector<Node*>::const_iterator aIter = mChildren.begin();
+        auto aIter = mChildren.begin();
         // For pLast == 0 and pLast == this all children are of interest
         // for another pLast the search starts behind pLast...
         if( pLast && pLast != this )
         {
-            aIter = std::find( mChildren.begin(), mChildren.end(), pLast );
+            aIter = std::find_if( mChildren.begin(), mChildren.end(),
+                                  [&] (std::unique_ptr<Node> const &p) { return p.get() == pLast; });
             if( aIter != mChildren.end() )
                 ++aIter;
         }
@@ -182,7 +179,7 @@ namespace {
                 ++aIter;
                 continue;
             }
-            pNext = *aIter;
+            pNext = aIter->get();
             // #i86923#
             if ( pNext->hasItemSet( bSkipUnusedItemSets ) )
             {
@@ -212,10 +209,10 @@ namespace {
     {
         bool bHasIgnorableChildren( false );
 
-        std::vector<Node*>::const_iterator aIter = mChildren.begin();
+        auto aIter = mChildren.begin();
         while( aIter != mChildren.end() && !bHasIgnorableChildren )
         {
-            Node* pChild = *aIter;
+            Node* pChild = aIter->get();
             if ( pChild->mbIsItemIgnorable )
             {
                 bHasIgnorableChildren =
@@ -235,10 +232,10 @@ namespace {
         DBG_ASSERT( hasIgnorableChildren( bSkipUnusedItemSets ),
                     "<Node::getItemSetOfIgnorableChild> - node has no ignorable children" );
 
-        std::vector<Node*>::const_iterator aIter = mChildren.begin();
+        auto aIter = mChildren.begin();
         while( aIter != mChildren.end() )
         {
-            Node* pChild = *aIter;
+            Node* pChild = aIter->get();
             if ( pChild->mbIsItemIgnorable )
             {
                 if ( pChild->hasItemSet( bSkipUnusedItemSets ) )
@@ -261,17 +258,6 @@ namespace {
         return pReturn;
     }
 
-    Node::~Node()
-    {
-        std::vector<Node*>::const_iterator aIter = mChildren.begin();
-        while( aIter != mChildren.end() )
-        {
-            delete *aIter;
-            ++aIter;
-        }
-        delete mpItem;
-    }
-
     class Iterator : public IStylePoolIteratorAccess
     {
         std::map< const SfxItemSet*, Node >& mrRoot;
diff --git a/svl/source/misc/adrparse.cxx b/svl/source/misc/adrparse.cxx
index 23fa558634fc..90b43a8ea191 100644
--- a/svl/source/misc/adrparse.cxx
+++ b/svl/source/misc/adrparse.cxx
@@ -663,8 +663,7 @@ SvAddressParser_Impl::SvAddressParser_Impl(SvAddressParser * pParser,
                             aTheRealName = rInput.copy( (m_pRealNameContentBegin - rInput.getStr()), nLen);
                     }
                     if (pParser->m_bHasFirst)
-                        pParser->m_aRest.push_back(new SvAddressEntry_Impl( aTheAddrSpec,
-                                                                            aTheRealName) );
+                        pParser->m_aRest.emplace_back( aTheAddrSpec, aTheRealName );
                     else
                     {
                         pParser->m_bHasFirst = true;
@@ -729,9 +728,6 @@ SvAddressParser::SvAddressParser(const OUString& rInput)
 
 SvAddressParser::~SvAddressParser()
 {
-    for ( size_t i = m_aRest.size(); i > 0; )
-        delete m_aRest[ --i ];
-    m_aRest.clear();
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svl/source/misc/strmadpt.cxx b/svl/source/misc/strmadpt.cxx
index 1e36c637a388..cb5852865c88 100644
--- a/svl/source/misc/strmadpt.cxx
+++ b/svl/source/misc/strmadpt.cxx
@@ -130,7 +130,7 @@ bool SvInputStream::open()
         }
         m_xSeekable.set(m_xStream, uno::UNO_QUERY);
         if (!m_xSeekable.is())
-            m_pPipe = new SvDataPipe_Impl;
+            m_pPipe.reset( new SvDataPipe_Impl );
     }
     return true;
 }
@@ -338,7 +338,6 @@ SvInputStream::~SvInputStream()
         {
         }
     }
-    delete m_pPipe;
 }
 
 //  SvOutputStream
diff --git a/svl/source/numbers/zforfind.cxx b/svl/source/numbers/zforfind.cxx
index c0f679e97b7a..6a2a4d9aa7e9 100644
--- a/svl/source/numbers/zforfind.cxx
+++ b/svl/source/numbers/zforfind.cxx
@@ -84,7 +84,7 @@ ImpSvNumberInputScan::ImpSvNumberInputScan( SvNumberFormatter* pFormatterP )
         eSetType( SvNumFormatType::UNDEFINED )
 {
     pFormatter = pFormatterP;
-    pNullDate = new Date(30,12,1899);
+    pNullDate.reset( new Date(30,12,1899) );
     nYear2000 = SvNumberFormatter::GetYear2000Default();
     Reset();
     ChangeIntl();
@@ -93,8 +93,6 @@ ImpSvNumberInputScan::ImpSvNumberInputScan( SvNumberFormatter* pFormatterP )
 
 ImpSvNumberInputScan::~ImpSvNumberInputScan()
 {
-    Reset();
-    delete pNullDate;
 }
 
 
@@ -3527,7 +3525,7 @@ void ImpSvNumberInputScan::ChangeNullDate( const sal_uInt16 Day,
     }
     else
     {
-        pNullDate = new Date(Day, Month, Year);
+        pNullDate.reset(new Date(Day, Month, Year));
     }
 }
 
diff --git a/svl/source/numbers/zforfind.hxx b/svl/source/numbers/zforfind.hxx
index 58021ffff824..17b14edb4c2d 100644
--- a/svl/source/numbers/zforfind.hxx
+++ b/svl/source/numbers/zforfind.hxx
@@ -82,7 +82,7 @@ private:
     bool    bTextInitialized;                   //* Whether days and months are initialized
     bool    bScanGenitiveMonths;                //* Whether to scan an input for genitive months
     bool    bScanPartitiveMonths;               //* Whether to scan an input for partitive months
-    Date* pNullDate;                            //* 30Dec1899
+    std::unique_ptr<Date> pNullDate;                 //* 30Dec1899
     // Variables for provisional results:
     OUString   sStrArray[SV_MAX_COUNT_INPUT_STRINGS];//* Array of scanned substrings
     bool       IsNum[SV_MAX_COUNT_INPUT_STRINGS];    //* Whether a substring is numeric
diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx
index cc3bda8ce139..e8f030d6c194 100644
--- a/svl/source/numbers/zforlist.cxx
+++ b/svl/source/numbers/zforlist.cxx
@@ -278,12 +278,7 @@ SvNumberFormatter::~SvNumberFormatter()
     }
 
     aFTable.clear();
-    delete pFormatTable;
-    delete pCharClass;
-    delete pStringScanner;
-    delete pFormatScanner;
     ClearMergeTable();
-    delete pMergeTable;
 }
 
 
@@ -299,7 +294,7 @@ void SvNumberFormatter::ImpConstruct( LanguageType eLang )
     nDefaultSystemCurrencyFormat = NUMBERFORMAT_ENTRY_NOT_FOUND;
 
     maLanguageTag.reset( eLang );
-    pCharClass = new CharClass( m_xContext, maLanguageTag );
+    pCharClass.reset( new CharClass( m_xContext, maLanguageTag ) );
     xLocaleData.init( m_xContext, maLanguageTag );
     xCalendar.init( m_xContext, maLanguageTag.getLocale() );
     xTransliteration.init( m_xContext, eLang );
@@ -312,8 +307,8 @@ void SvNumberFormatter::ImpConstruct( LanguageType eLang )
     aThousandSep = pLoc->getNumThousandSep();
     aDateSep = pLoc->getDateSep();
 
-    pStringScanner = new ImpSvNumberInputScan( this );
-    pFormatScanner = new ImpSvNumberformatScan( this );
+    pStringScanner.reset( new ImpSvNumberInputScan( this ) );
+    pFormatScanner.reset( new ImpSvNumberformatScan( this ) );
     pFormatTable = nullptr;
     MaxCLOffset = 0;
     ImpGenerateFormats( 0, false );     // 0 .. 999 for initialized language formats
@@ -485,8 +480,8 @@ void SvNumberFormatter::ReplaceSystemCL( LanguageType eOldLanguage )
         LanguageType eLge = eOldLanguage;   // ConvertMode changes this
         bool bCheck = false;
         sal_Int32 nCheckPos = -1;
-        std::unique_ptr<SvNumberformat> pNewEntry(new SvNumberformat( aString, pFormatScanner,
-                                                                      pStringScanner, nCheckPos, eLge ));
+        std::unique_ptr<SvNumberformat> pNewEntry(new SvNumberformat( aString, pFormatScanner.get(),
+                                                                      pStringScanner.get(), nCheckPos, eLge ));
         if ( nCheckPos == 0 )
         {
             SvNumFormatType eCheckType = pNewEntry->GetType();
@@ -519,7 +514,7 @@ const css::uno::Reference<css::uno::XComponentContext>& SvNumberFormatter::GetCo
     return m_xContext;
 }
 
-const ImpSvNumberformatScan* SvNumberFormatter::GetFormatScanner() const { return pFormatScanner; }
+const ImpSvNumberformatScan* SvNumberFormatter::GetFormatScanner() const { return pFormatScanner.get(); }
 
 const LanguageTag& SvNumberFormatter::GetLanguageTag() const { return maLanguageTag; }
 
@@ -528,7 +523,7 @@ const ::utl::TransliterationWrapper* SvNumberFormatter::GetTransliteration() con
     return xTransliteration.get();
 }
 
-const CharClass* SvNumberFormatter::GetCharClass() const { return pCharClass; }
+const CharClass* SvNumberFormatter::GetCharClass() const { return pCharClass.get(); }
 
 const LocaleDataWrapper* SvNumberFormatter::GetLocaleData() const { return xLocaleData.get(); }
 
@@ -582,8 +577,8 @@ bool SvNumberFormatter::PutEntry(OUString& rString,
     LanguageType eLge = eLnge;                          // non-const for ConvertMode
     bool bCheck = false;
     std::unique_ptr<SvNumberformat> p_Entry(new SvNumberformat(rString,
-                                                               pFormatScanner,
-                                                               pStringScanner,
+                                                               pFormatScanner.get(),
+                                                               pStringScanner.get(),
                                                                nCheckPos,
                                                                eLge));
 
@@ -1037,7 +1032,7 @@ SvNumberFormatTable& SvNumberFormatter::GetEntryTable(
     }
     else
     {
-        pFormatTable = new SvNumberFormatTable;
+        pFormatTable.reset( new SvNumberFormatTable );
     }
     ChangeIntl(eLnge);
     sal_uInt32 CLOffset = ImpGetCLOffset(ActLnge);
@@ -1635,8 +1630,8 @@ bool SvNumberFormatter::GetPreviewString(const OUString& sFormatString,
     sal_Int32 nCheckPos = -1;
     OUString sTmpString = sFormatString;
     std::unique_ptr<SvNumberformat> p_Entry(new SvNumberformat(sTmpString,
-                                                 pFormatScanner,
-                                                 pStringScanner,
+                                                 pFormatScanner.get(),
+                                                 pStringScanner.get(),
                                                  nCheckPos,
                                                  eLnge));
     if (nCheckPos == 0)                                 // String ok
@@ -1703,8 +1698,8 @@ bool SvNumberFormatter::GetPreviewStringGuess( const OUString& sFormatString,
     if ( bEnglish )
     {
         sTmpString = sFormatString;
-        pEntry.reset(new SvNumberformat( sTmpString, pFormatScanner,
-                                     pStringScanner, nCheckPos, eLnge ));
+        pEntry.reset(new SvNumberformat( sTmpString, pFormatScanner.get(),
+                                     pStringScanner.get(), nCheckPos, eLnge ));
     }
     else
     {
@@ -1716,8 +1711,8 @@ bool SvNumberFormatter::GetPreviewStringGuess( const OUString& sFormatString,
         LanguageType eFormatLang = LANGUAGE_ENGLISH_US;
         pFormatScanner->SetConvertMode( LANGUAGE_ENGLISH_US, eLnge );
         sTmpString = sFormatString;
-        pEntry.reset(new SvNumberformat( sTmpString, pFormatScanner,
-                                     pStringScanner, nCheckPos, eFormatLang ));
+        pEntry.reset(new SvNumberformat( sTmpString, pFormatScanner.get(),
+                                     pStringScanner.get(), nCheckPos, eFormatLang ));
         pFormatScanner->SetConvertMode( false );
         ChangeIntl( eLnge );
 
@@ -1730,8 +1725,8 @@ bool SvNumberFormatter::GetPreviewStringGuess( const OUString& sFormatString,
                 // Force locale's keywords.
                 pFormatScanner->ChangeIntl( ImpSvNumberformatScan::KeywordLocalization::LocaleLegacy );
                 sTmpString = sFormatString;
-                pEntry.reset(new SvNumberformat( sTmpString, pFormatScanner,
-                                             pStringScanner, nCheckPos, eLnge ));
+                pEntry.reset(new SvNumberformat( sTmpString, pFormatScanner.get(),
+                                             pStringScanner.get(), nCheckPos, eLnge ));
             }
             else
             {
@@ -1741,8 +1736,8 @@ bool SvNumberFormatter::GetPreviewStringGuess( const OUString& sFormatString,
                 eFormatLang = eLnge;
                 pFormatScanner->SetConvertMode( eLnge, LANGUAGE_ENGLISH_US );
                 sTmpString = sFormatString;
-                std::unique_ptr<SvNumberformat> pEntry2(new SvNumberformat( sTmpString, pFormatScanner,
-                                                              pStringScanner, nCheckPos2, eFormatLang ));
+                std::unique_ptr<SvNumberformat> pEntry2(new SvNumberformat( sTmpString, pFormatScanner.get(),
+                                                              pStringScanner.get(), nCheckPos2, eFormatLang ));
                 pFormatScanner->SetConvertMode( false );
                 ChangeIntl( eLnge );
                 if ( nCheckPos2 == 0 && !xTransliteration->isEqual( sFormatString,
@@ -1752,8 +1747,8 @@ bool SvNumberFormatter::GetPreviewStringGuess( const OUString& sFormatString,
                     // Force locale's keywords.
                     pFormatScanner->ChangeIntl( ImpSvNumberformatScan::KeywordLocalization::LocaleLegacy );
                     sTmpString = sFormatString;
-                    pEntry.reset(new SvNumberformat( sTmpString, pFormatScanner,
-                                                 pStringScanner, nCheckPos, eLnge ));
+                    pEntry.reset(new SvNumberformat( sTmpString, pFormatScanner.get(),
+                                                 pStringScanner.get(), nCheckPos, eLnge ));
                 }
             }
         }
@@ -1789,8 +1784,8 @@ bool SvNumberFormatter::GetPreviewString( const OUString& sFormatString,
     sal_Int32 nCheckPos = -1;
     OUString sTmpString = sFormatString;
     std::unique_ptr<SvNumberformat> p_Entry(new SvNumberformat( sTmpString,
-                                                  pFormatScanner,
-                                                  pStringScanner,
+                                                  pFormatScanner.get(),
+                                                  pStringScanner.get(),
                                                   nCheckPos,
                                                   eLnge));
     if (nCheckPos == 0)                          // String ok
@@ -1843,8 +1838,8 @@ sal_uInt32 SvNumberFormatter::TestNewString(const OUString& sFormatString,
     sal_Int32 nCheckPos = -1;
     OUString sTmpString = sFormatString;
     std::unique_ptr<SvNumberformat> pEntry(new SvNumberformat(sTmpString,
-                                                pFormatScanner,
-                                                pStringScanner,
+                                                pFormatScanner.get(),
+                                                pStringScanner.get(),
                                                 nCheckPos,
                                                 eLnge));
     if (nCheckPos == 0)                                 // String ok
@@ -1893,8 +1888,8 @@ SvNumberformat* SvNumberFormatter::ImpInsertFormat( const css::i18n::NumberForma
     }
     sal_Int32 nCheckPos = 0;
     std::unique_ptr<SvNumberformat> pFormat(new SvNumberformat(aCodeStr,
-                                                               pFormatScanner,
-                                                               pStringScanner,
+                                                               pFormatScanner.get(),
+                                                               pStringScanner.get(),
                                                                nCheckPos,
                                                                ActLnge));
     if (nCheckPos != 0)
@@ -2059,8 +2054,8 @@ sal_uInt32 SvNumberFormatter::GetFormatSpecialInfo( const OUString& rFormatStrin
     eLnge = ActLnge;
     OUString aTmpStr( rFormatString );
     sal_Int32 nCheckPos = 0;
-    std::unique_ptr<SvNumberformat> pFormat(new SvNumberformat( aTmpStr, pFormatScanner,
-                                                  pStringScanner, nCheckPos, eLnge ));
+    std::unique_ptr<SvNumberformat> pFormat(new SvNumberformat( aTmpStr, pFormatScanner.get(),
+                                                  pStringScanner.get(), nCheckPos, eLnge ));
     if ( nCheckPos == 0 )
     {
         pFormat->GetFormatSpecialInfo( bThousand, IsRed, nPrecision, nLeadingCnt );
@@ -2337,8 +2332,8 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bNoAdditio
         OUString aFormatCode = pFormatScanner->GetBooleanString();
         sal_Int32 nCheckPos = 0;
 
-        std::unique_ptr<SvNumberformat> pNewFormat(new SvNumberformat( aFormatCode, pFormatScanner,
-                                                                       pStringScanner, nCheckPos, ActLnge ));
+        std::unique_ptr<SvNumberformat> pNewFormat(new SvNumberformat( aFormatCode, pFormatScanner.get(),
+                                                                       pStringScanner.get(), nCheckPos, ActLnge ));
         pNewFormat->SetType(SvNumFormatType::LOGICAL);
         pNewFormat->SetStandard();
         if ( !aFTable.emplace(CLOffset + ZF_STANDARD_LOGICAL /* NF_BOOLEAN */,
@@ -2349,8 +2344,8 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bNoAdditio
 
         // Text
         aFormatCode = "@";
-        pNewFormat.reset(new SvNumberformat( aFormatCode, pFormatScanner,
-                                             pStringScanner, nCheckPos, ActLnge ));
+        pNewFormat.reset(new SvNumberformat( aFormatCode, pFormatScanner.get(),
+                                             pStringScanner.get(), nCheckPos, ActLnge ));
         pNewFormat->SetType(SvNumFormatType::TEXT);
         pNewFormat->SetStandard();
         if ( !aFTable.emplace( CLOffset + ZF_STANDARD_TEXT /* NF_TEXT */,
@@ -3119,7 +3114,7 @@ SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter
     }
     else
     {
-        pMergeTable = new SvNumberFormatterIndexTable;
+        pMergeTable.reset( new SvNumberFormatterIndexTable );
     }
 
     sal_uInt32 nCLOffset = 0;
@@ -3183,7 +3178,7 @@ SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter
         }
         ++it;
     }
-    return pMergeTable;
+    return pMergeTable.get();
 }
 
 
diff --git a/svl/source/undo/undo.cxx b/svl/source/undo/undo.cxx
index 8fe198ce51f6..e0974e4e661f 100644
--- a/svl/source/undo/undo.cxx
+++ b/svl/source/undo/undo.cxx
@@ -347,7 +347,7 @@ namespace svl { namespace undo { namespace impl
         {
             // remember
             if ( i_action )
-                m_aUndoActionsCleanup.push_back( i_action );
+                m_aUndoActionsCleanup.emplace_back( i_action );
         }
 
         /** schedules the given SfxUndoListener method to be called for all registered listeners.
@@ -368,7 +368,7 @@ namespace svl { namespace undo { namespace impl
     private:
         SfxUndoManager_Data&                m_rManagerData;
         ::osl::ResettableMutexGuard         m_aGuard;
-        ::std::vector< SfxUndoAction* >     m_aUndoActionsCleanup;
+        ::std::vector< std::unique_ptr<SfxUndoAction> > m_aUndoActionsCleanup;
         ::std::vector< NotifyUndoListener > m_notifiers;
     };
 
@@ -381,8 +381,6 @@ namespace svl { namespace undo { namespace impl
         m_aGuard.clear();
 
         // delete all actions
-        for (auto const& undoAction : m_aUndoActionsCleanup)
-            delete undoAction;
         m_aUndoActionsCleanup.clear();
 
         // handle scheduled notification


More information about the Libreoffice-commits mailing list