[Libreoffice-commits] core.git: sc/inc sc/qa sc/source

Noel Grandin noel.grandin at collabora.co.uk
Thu Mar 22 08:55:20 UTC 2018


 sc/inc/cellsuno.hxx                                    |    4 
 sc/inc/document.hxx                                    |   87 ++++++-------
 sc/inc/refreshtimer.hxx                                |    4 
 sc/inc/refreshtimerprotector.hxx                       |    4 
 sc/inc/textuno.hxx                                     |    4 
 sc/qa/unit/ucalc.cxx                                   |   22 +--
 sc/qa/unit/ucalc_sharedformula.cxx                     |   12 -
 sc/source/core/data/column2.cxx                        |    2 
 sc/source/core/data/documen2.cxx                       |  111 +++++++----------
 sc/source/core/data/documen3.cxx                       |   51 +++----
 sc/source/core/data/documen4.cxx                       |   10 -
 sc/source/core/data/documen6.cxx                       |    2 
 sc/source/core/data/documen7.cxx                       |    6 
 sc/source/core/data/documen9.cxx                       |    3 
 sc/source/core/data/document.cxx                       |   18 +-
 sc/source/core/data/formulacell.cxx                    |    4 
 sc/source/core/tool/chgtrack.cxx                       |   11 -
 sc/source/core/tool/refreshtimer.cxx                   |    6 
 sc/source/filter/inc/XclImpChangeTrack.hxx             |    2 
 sc/source/filter/oox/revisionfragment.cxx              |    2 
 sc/source/filter/xcl97/XclImpChangeTrack.cxx           |    7 -
 sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx |    2 
 sc/source/filter/xml/XMLConsolidationContext.cxx       |   24 +--
 sc/source/filter/xml/xmlimprt.cxx                      |    4 
 sc/source/ui/Accessibility/AccessibleText.cxx          |    6 
 sc/source/ui/docshell/dbdocfun.cxx                     |   10 -
 sc/source/ui/docshell/docfunc.cxx                      |    2 
 sc/source/ui/docshell/docsh5.cxx                       |    6 
 sc/source/ui/inc/AccessibleText.hxx                    |    2 
 sc/source/ui/inc/refundo.hxx                           |    3 
 sc/source/ui/undo/refundo.cxx                          |    9 -
 sc/source/ui/undo/undocell.cxx                         |    6 
 sc/source/ui/undo/undodat.cxx                          |   14 +-
 sc/source/ui/unoobj/cellsuno.cxx                       |   10 -
 sc/source/ui/unoobj/docuno.cxx                         |    2 
 sc/source/ui/unoobj/textuno.cxx                        |    6 
 sc/source/ui/view/cellsh1.cxx                          |    2 
 sc/source/ui/view/formatsh.cxx                         |    2 
 38 files changed, 223 insertions(+), 259 deletions(-)

New commits:
commit b7654432bfeca619b7657abc8d27193e44cf4dfc
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Mar 20 12:54:11 2018 +0200

    loplugin:useuniqueptr in ScDocument
    
    and fix bug where we were deleting a pointer to an object
    we did not own via pFormatExchangeList
    
    Change-Id: I488c679734c48bd21bc6be04837e037e97550647
    Reviewed-on: https://gerrit.libreoffice.org/51668
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sc/inc/cellsuno.hxx b/sc/inc/cellsuno.hxx
index 8e0a80668dec..b59a84218f88 100644
--- a/sc/inc/cellsuno.hxx
+++ b/sc/inc/cellsuno.hxx
@@ -176,8 +176,8 @@ private:
     const SfxItemPropertySet* pPropSet;
     ScDocShell*             pDocShell;
     ScLinkListener*         pValueListener;
-    ScPatternAttr*          pCurrentFlat;
-    ScPatternAttr*          pCurrentDeep;
+    std::unique_ptr<ScPatternAttr> pCurrentFlat;
+    std::unique_ptr<ScPatternAttr> pCurrentDeep;
     SfxItemSet*             pCurrentDataSet;
     SfxItemSet*             pNoDfltCurrentDataSet;
     ScMarkData*             pMarkData;
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 08fa0849ff09..bc05e844812e 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -358,48 +358,48 @@ private:
     ScCalcConfig        maCalcConfig;
 
     SfxUndoManager*     mpUndoManager;
-    ScFieldEditEngine*  mpEditEngine;                   // uses pEditPool from xPoolHelper
-    ScNoteEditEngine*   mpNoteEngine;                   // uses pEditPool from xPoolHelper
+    std::unique_ptr<ScFieldEditEngine>  mpEditEngine;                   // uses pEditPool from xPoolHelper
+    std::unique_ptr<ScNoteEditEngine>   mpNoteEngine;                   // uses pEditPool from xPoolHelper
     SfxObjectShell*     mpShell;
     VclPtr<SfxPrinter>  mpPrinter;
     VclPtr<VirtualDevice> mpVirtualDevice_100th_mm;
     ScDrawLayer*        mpDrawLayer;                    // SdrModel
     rtl::Reference<XColorList> pColorList;
     ScValidationDataList* pValidationList;              // validity
-    SvNumberFormatterIndexTable*    pFormatExchangeList;    // for application of number formats
+    SvNumberFormatterIndexTable* pFormatExchangeList;    // for application of number formats
     TableContainer maTabs;
     std::vector<OUString> maTabNames;               // for undo document, we need the information tab name <-> index
-    mutable ScRangeName* pRangeName;
-    ScDBCollection*     pDBCollection;
-    ScDPCollection*     pDPCollection;
+    mutable std::unique_ptr<ScRangeName>    pRangeName;
+    std::unique_ptr<ScDBCollection>         pDBCollection;
+    std::unique_ptr<ScDPCollection>         pDPCollection;
     std::unique_ptr< ScTemporaryChartLock > apTemporaryChartLock;
-    ScPatternAttr*      pSelectionAttr;                 // Attributes of a block
+    std::unique_ptr<ScPatternAttr>          pSelectionAttr;                 // Attributes of a block
     ScFormulaCell*      pFormulaTree;                   // formula tree (start)
     ScFormulaCell*      pEOFormulaTree;                 // formula tree (end), last cell
     ScFormulaCell*      pFormulaTrack;                  // BroadcastTrack (start)
     ScFormulaCell*      pEOFormulaTrack;                // BroadcastTrack (end), last cell
-    ScBroadcastAreaSlotMachine* pBASM;                  // BroadcastAreas
+    std::unique_ptr<ScBroadcastAreaSlotMachine> pBASM;                  // BroadcastAreas
     ScChartListenerCollection* pChartListenerCollection;
-    SvMemoryStream*     pClipData;
-    ScDetOpList*        pDetOpList;
-    ScChangeTrack*      pChangeTrack;
-    SfxBroadcaster*     pUnoBroadcaster;
-    ScUnoListenerCalls* pUnoListenerCalls;
-    ScUnoRefList*       pUnoRefUndoList;
-    ScChangeViewSettings* pChangeViewSettings;
-    ScScriptTypeData*   pScriptTypeData;
-    ScRefreshTimerControl* pRefreshTimerControl;
+    std::unique_ptr<SvMemoryStream>     pClipData;
+    std::unique_ptr<ScDetOpList>        pDetOpList;
+    std::unique_ptr<ScChangeTrack>      pChangeTrack;
+    std::unique_ptr<SfxBroadcaster>     pUnoBroadcaster;
+    std::unique_ptr<ScUnoListenerCalls> pUnoListenerCalls;
+    std::unique_ptr<ScUnoRefList>       pUnoRefUndoList;
+    std::unique_ptr<ScChangeViewSettings> pChangeViewSettings;
+    std::unique_ptr<ScScriptTypeData>   pScriptTypeData;
+    std::unique_ptr<ScRefreshTimerControl> pRefreshTimerControl;
     std::shared_ptr<SvxForbiddenCharactersTable> xForbiddenCharacters;
-    ScDBData*           mpAnonymousDBData;
+    std::unique_ptr<ScDBData>               mpAnonymousDBData;
     std::unique_ptr<sc::ExternalDataMapper> mpDataMapper;
 
-    ScFieldEditEngine*  pCacheFieldEditEngine;
+    std::unique_ptr<ScFieldEditEngine>    pCacheFieldEditEngine;
 
-    std::unique_ptr<ScDocProtection> pDocProtection;
-    std::unique_ptr<ScClipParam>     mpClipParam;
+    std::unique_ptr<ScDocProtection>      pDocProtection;
+    std::unique_ptr<ScClipParam>          mpClipParam;
 
     std::unique_ptr<ScExternalRefManager> pExternalRefMgr;
-    std::unique_ptr<ScMacroManager> mpMacroMgr;
+    std::unique_ptr<ScMacroManager>       mpMacroMgr;
 
     // mutable for lazy construction
     mutable std::unique_ptr< ScFormulaParserPool >
@@ -415,11 +415,11 @@ private:
     ScDocOptions*       pDocOptions;                    // document options
     ScExtDocOptions*    pExtDocOptions;                 // for import etc.
     std::unique_ptr<ScClipOptions> mpClipOptions;       // clipboard options
-    ScConsolidateParam* pConsolidateDlgData;
+    std::unique_ptr<ScConsolidateParam> pConsolidateDlgData;
 
     ScAutoNameCache*    pAutoNameCache;                 // for automatic name lookup during CompileXML
 
-    SfxItemSet*         pPreviewFont; // convert to std::unique_ptr or whatever
+    std::unique_ptr<SfxItemSet> pPreviewFont; // convert to std::unique_ptr or whatever
     ScStyleSheet*       pPreviewCellStyle;
     ScMarkData          maPreviewSelection;
     sal_Int64           nUnoObjectId;                   // counted up for UNO objects
@@ -596,13 +596,13 @@ public:
     SC_DLLPUBLIC void           GetLanguage( LanguageType& rLatin, LanguageType& rCjk, LanguageType& rCtl ) const;
     void                        SetLanguage( LanguageType eLatin, LanguageType eCjk, LanguageType eCtl );
 
-    void                        SetConsolidateDlgData( const ScConsolidateParam* pData );
-    const ScConsolidateParam*   GetConsolidateDlgData() const { return pConsolidateDlgData; }
+    void                        SetConsolidateDlgData( std::unique_ptr<ScConsolidateParam> pData );
+    const ScConsolidateParam*   GetConsolidateDlgData() const { return pConsolidateDlgData.get(); }
 
     void                        Clear( bool bFromDestructor = false );
 
-    ScFieldEditEngine*          CreateFieldEditEngine();
-    void                        DisposeFieldEditEngine(ScFieldEditEngine*& rpEditEngine);
+    std::unique_ptr<ScFieldEditEngine> CreateFieldEditEngine();
+    void                        DisposeFieldEditEngine(std::unique_ptr<ScFieldEditEngine>& rpEditEngine);
 
     /**
      * Get all range names that are local to each table.  It only returns
@@ -614,7 +614,7 @@ public:
     SC_DLLPUBLIC ScRangeName*  GetRangeName(SCTAB nTab) const;
     SC_DLLPUBLIC ScRangeName*  GetRangeName() const;
     void                       SetRangeName(SCTAB nTab, ScRangeName* pNew);
-    void                       SetRangeName( ScRangeName* pNewRangeName );
+    void                       SetRangeName( std::unique_ptr<ScRangeName> pNewRangeName );
     bool                       IsAddressInRangeName( RangeNameScope eScope, ScAddress& rAddress);
 
     /** Find a named expression / range name in either global or a local scope.
@@ -761,8 +761,8 @@ public:
     ScRangePairListRef& GetColNameRangesRef() { return xColNameRanges; }
     ScRangePairListRef& GetRowNameRangesRef() { return xRowNameRanges; }
 
-    SC_DLLPUBLIC ScDBCollection* GetDBCollection() const { return pDBCollection;}
-    void                         SetDBCollection( ScDBCollection* pNewDBCollection,
+    SC_DLLPUBLIC ScDBCollection* GetDBCollection() const { return pDBCollection.get();}
+    void                         SetDBCollection( std::unique_ptr<ScDBCollection> pNewDBCollection,
                                                   bool bRemoveAutoFilter = false );
     const ScDBData*              GetDBAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab, ScDBDataPortion ePortion) const;
     ScDBData*                    GetDBAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab, ScDBDataPortion ePortion);
@@ -825,7 +825,7 @@ public:
         used if the corresponding sheet-local anonymous database range is
         already used with AutoFilter and range differs. Not stored in document
         files. */
-    SC_DLLPUBLIC void             SetAnonymousDBData(ScDBData* pDBData);
+    SC_DLLPUBLIC void             SetAnonymousDBData(std::unique_ptr<ScDBData> pDBData);
     SC_DLLPUBLIC ScDBData*        GetAnonymousDBData();
 
     SC_DLLPUBLIC SCTAB            GetTableCount() const;
@@ -995,7 +995,8 @@ public:
 
     void            BeginUnoRefUndo();
     bool            HasUnoRefUndo() const       { return ( pUnoRefUndoList != nullptr ); }
-    ScUnoRefList*   EndUnoRefUndo();            // must be deleted by caller!
+    SAL_WARN_UNUSED_RESULT
+    std::unique_ptr<ScUnoRefList> EndUnoRefUndo();            // must be deleted by caller!
     sal_Int64       GetNewUnoId() { return ++nUnoObjectId; }
     void            AddUnoRefChange( sal_Int64 nId, const ScRangeList& rOldRanges );
 
@@ -1262,8 +1263,8 @@ public:
     bool CompileErrorCells(FormulaError nErrCode);
 
     ScAutoNameCache*     GetAutoNameCache()     { return pAutoNameCache; }
-    void                 SetPreviewFont( SfxItemSet* pFontSet );
-    SfxItemSet*          GetPreviewFont() { return pPreviewFont; }
+    void                 SetPreviewFont( std::unique_ptr<SfxItemSet> pFontSet );
+    SfxItemSet*          GetPreviewFont() { return pPreviewFont.get(); }
     SfxItemSet*          GetPreviewFont( SCCOL nCol, SCROW nRow, SCTAB nTab );
     const ScMarkData&    GetPreviewSelection() const { return maPreviewSelection; }
     void                 SetPreviewSelection( const ScMarkData& rSel );
@@ -1635,7 +1636,7 @@ public:
     SC_DLLPUBLIC const ScPatternAttr*       GetPattern( const ScAddress& rPos ) const;
     SC_DLLPUBLIC const ScPatternAttr*       GetMostUsedPattern( SCCOL nCol, SCROW nStartRow, SCROW nEndRow, SCTAB nTab ) const;
     const ScPatternAttr*                    GetSelectionPattern( const ScMarkData& rMark );
-    ScPatternAttr*                          CreateSelectionPattern( const ScMarkData& rMark, bool bDeep = true );
+    std::unique_ptr<ScPatternAttr>          CreateSelectionPattern( const ScMarkData& rMark, bool bDeep = true );
     SC_DLLPUBLIC void                       AddCondFormatData( const ScRangeList& rRange, SCTAB nTab, sal_uInt32 nIndex );
     void                                    RemoveCondFormatData( const ScRangeList& rRange, SCTAB nTab, sal_uInt32 nIndex );
 
@@ -1661,8 +1662,8 @@ public:
     bool            HasDetectiveOperations() const;
     void            AddDetectiveOperation( const ScDetOpData& rData );
     void            ClearDetectiveOperations();
-    ScDetOpList*    GetDetOpList() const                { return pDetOpList; }
-    void            SetDetOpList(ScDetOpList* pNew);
+    ScDetOpList*    GetDetOpList() const { return pDetOpList.get(); }
+    void            SetDetOpList(std::unique_ptr<ScDetOpList> pNew);
 
     bool            HasDetectiveObjects(SCTAB nTab) const;
 
@@ -2035,7 +2036,7 @@ public:
     bool            IsCalcingAfterLoad() const { return bCalcingAfterLoad; }
     void            SetNoListening( bool bVal ) { bNoListening = bVal; }
     bool            GetNoListening() const { return bNoListening; }
-    ScBroadcastAreaSlotMachine* GetBASM() const { return pBASM; }
+    ScBroadcastAreaSlotMachine* GetBASM() const { return pBASM.get(); }
 
     SC_DLLPUBLIC ScChartListenerCollection* GetChartListenerCollection() const { return pChartListenerCollection;}
     void                  SetChartListenerCollection( ScChartListenerCollection*,
@@ -2047,7 +2048,7 @@ public:
     void                  SetChartListenerCollectionNeedsUpdate( bool bFlg ) { bChartListenerCollectionNeedsUpdate = bFlg; }
     void                  AddOLEObjectToCollection(const OUString& rName);
 
-    ScChangeViewSettings* GetChangeViewSettings() const     { return pChangeViewSettings; }
+    ScChangeViewSettings* GetChangeViewSettings() const     { return pChangeViewSettings.get(); }
     SC_DLLPUBLIC void     SetChangeViewSettings(const ScChangeViewSettings& rNew);
 
     const std::shared_ptr<SvxForbiddenCharactersTable>& GetForbiddenCharacters();
@@ -2292,11 +2293,11 @@ public:
 
     void            KeyInput();      // TimerDelays etc.
 
-    ScChangeTrack*  GetChangeTrack() const { return pChangeTrack; }
+    ScChangeTrack*  GetChangeTrack() const { return pChangeTrack.get(); }
 
     //! only for import filter, deletes any existing ChangeTrack via
     //! EndChangeTracking() and takes ownership of new ChangeTrack pTrack
-    SC_DLLPUBLIC void  SetChangeTrack( ScChangeTrack* pTrack );
+    SC_DLLPUBLIC void  SetChangeTrack( std::unique_ptr<ScChangeTrack> pTrack );
 
     void               StartChangeTracking();
     void               EndChangeTracking();
@@ -2318,7 +2319,7 @@ public:
     SC_DLLPUBLIC ScFieldEditEngine& GetEditEngine();
     SC_DLLPUBLIC ScNoteEditEngine&  GetNoteEngine();
 
-    ScRefreshTimerControl * const & GetRefreshTimerControlAddress() const
+    std::unique_ptr<ScRefreshTimerControl> const & GetRefreshTimerControlAddress() const
                                        { return pRefreshTimerControl; }
 
     void              SetPastingDrawFromOtherDoc( bool bVal )
diff --git a/sc/inc/refreshtimer.hxx b/sc/inc/refreshtimer.hxx
index 93ccc315d0d6..ba390ad7bfd2 100644
--- a/sc/inc/refreshtimer.hxx
+++ b/sc/inc/refreshtimer.hxx
@@ -41,7 +41,7 @@ public:
 
 class ScRefreshTimer : public AutoTimer
 {
-    ScRefreshTimerControl * const * ppControl;
+    std::unique_ptr<ScRefreshTimerControl> const * ppControl;
 
 public:
     ScRefreshTimer();
@@ -53,7 +53,7 @@ public:
     bool operator==( const ScRefreshTimer& r ) const;
     bool operator!=( const ScRefreshTimer& r ) const;
 
-    void SetRefreshControl( ScRefreshTimerControl * const * pp );
+    void SetRefreshControl( std::unique_ptr<ScRefreshTimerControl> const * pp );
     void SetRefreshHandler( const Link<Timer *, void>& rLink );
     sal_uLong GetRefreshDelay() const;
     void StopRefreshTimer();
diff --git a/sc/inc/refreshtimerprotector.hxx b/sc/inc/refreshtimerprotector.hxx
index 743643a48b28..9a4f41b6e209 100644
--- a/sc/inc/refreshtimerprotector.hxx
+++ b/sc/inc/refreshtimerprotector.hxx
@@ -17,10 +17,10 @@ class ScRefreshTimerControl;
 
 class SC_DLLPUBLIC ScRefreshTimerProtector
 {
-    ScRefreshTimerControl * const & m_rpControl;
+    std::unique_ptr<ScRefreshTimerControl> const & m_rpControl;
 
 public:
-    ScRefreshTimerProtector( ScRefreshTimerControl * const & rp );
+    ScRefreshTimerProtector( std::unique_ptr<ScRefreshTimerControl> const & rp );
     ~ScRefreshTimerProtector();
 };
 
diff --git a/sc/inc/textuno.hxx b/sc/inc/textuno.hxx
index c88a2831261d..0ffbcc483949 100644
--- a/sc/inc/textuno.hxx
+++ b/sc/inc/textuno.hxx
@@ -325,7 +325,7 @@ class ScCellTextData : public SfxListener
 protected:
     ScDocShell*             pDocShell;
     ScAddress               aCellPos;
-    ScFieldEditEngine*      pEditEngine;
+    std::unique_ptr<ScFieldEditEngine> pEditEngine;
     SvxEditEngineForwarder* pForwarder;
     ScCellEditSource* pOriginalSource;
     bool                    bDataValid;
@@ -342,7 +342,7 @@ public:
                             // helper functions for ScSharedCellEditSource:
     virtual SvxTextForwarder* GetTextForwarder();
     void                    UpdateData();
-    ScFieldEditEngine*      GetEditEngine() { GetTextForwarder(); return pEditEngine; }
+    ScFieldEditEngine*      GetEditEngine() { GetTextForwarder(); return pEditEngine.get(); }
 
     ScCellEditSource* GetOriginalSource();        // used as argument for SvxUnoText ctor
 
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 0f60db22a8ba..59b9d51824a1 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -1511,10 +1511,10 @@ void Test::testNamedRange()
 
     m_pDoc->SetValue (0, 0, 0, 101);
 
-    ScRangeName* pNames = new ScRangeName;
-    bool bSuccess = insertRangeNames(m_pDoc, pNames, aNames, aNames + SAL_N_ELEMENTS(aNames));
+    std::unique_ptr<ScRangeName> pNames(new ScRangeName);
+    bool bSuccess = insertRangeNames(m_pDoc, pNames.get(), aNames, aNames + SAL_N_ELEMENTS(aNames));
     CPPUNIT_ASSERT_MESSAGE("Failed to insert range names.", bSuccess);
-    m_pDoc->SetRangeName(pNames);
+    m_pDoc->SetRangeName(std::move(pNames));
 
     ScRangeName* pNewRanges = m_pDoc->GetRangeName();
     CPPUNIT_ASSERT(pNewRanges);
@@ -1537,12 +1537,12 @@ void Test::testNamedRange()
     ASSERT_DOUBLES_EQUAL_MESSAGE ("calculation failed", 1.0, result);
 
     // Test copy-ability of range names.
-    ScRangeName* pCopiedRanges = new ScRangeName(*pNewRanges);
-    m_pDoc->SetRangeName(pCopiedRanges);
+    std::unique_ptr<ScRangeName> pCopiedRanges(new ScRangeName(*pNewRanges));
+    m_pDoc->SetRangeName(std::move(pCopiedRanges));
     // Make sure the index lookup still works.
     for (size_t i = 0; i < SAL_N_ELEMENTS(aNames); ++i)
     {
-        const ScRangeData* p = pCopiedRanges->findByIndex(aNames[i].mnIndex);
+        const ScRangeData* p = m_pDoc->GetRangeName()->findByIndex(aNames[i].mnIndex);
         CPPUNIT_ASSERT_MESSAGE("lookup of range name by index failed with the copied instance.", p);
         OUString aName = p->GetName();
         CPPUNIT_ASSERT_MESSAGE("wrong range name is retrieved with the copied instance.", aName.equalsAscii(aNames[i].mpName));
@@ -1588,10 +1588,10 @@ void Test::testInsertNameList()
         { "MyRange3", "$Test.$C$1:$C$100", 3 }
     };
 
-    ScRangeName* pNames = new ScRangeName;
-    bool bSuccess = insertRangeNames(m_pDoc, pNames, aNames, aNames + SAL_N_ELEMENTS(aNames));
+    std::unique_ptr<ScRangeName> pNames(new ScRangeName);
+    bool bSuccess = insertRangeNames(m_pDoc, pNames.get(), aNames, aNames + SAL_N_ELEMENTS(aNames));
     CPPUNIT_ASSERT_MESSAGE("Failed to insert range names.", bSuccess);
-    m_pDoc->SetRangeName(pNames);
+    m_pDoc->SetRangeName(std::move(pNames));
 
     ScDocFunc& rDocFunc = getDocShell().GetDocFunc();
     ScAddress aPos(1,1,0);
@@ -3282,7 +3282,7 @@ void Test::testCopyPaste()
     ScRangeData* pGlobal = new ScRangeData( m_pDoc, "global", aAdr);
     const OUString aGlobal2Symbol("$Sheet1.$A$1:$A$23");
     ScRangeData* pGlobal2 = new ScRangeData( m_pDoc, "global2", aGlobal2Symbol);
-    ScRangeName* pGlobalRangeName = new ScRangeName();
+    std::unique_ptr<ScRangeName> pGlobalRangeName(new ScRangeName());
     pGlobalRangeName->insert(pGlobal);
     pGlobalRangeName->insert(pGlobal2);
     ScRangeName* pLocalRangeName1 = new ScRangeName();
@@ -3291,7 +3291,7 @@ void Test::testCopyPaste()
     pLocalRangeName1->insert(pLocal3);
     pLocalRangeName1->insert(pLocal4);
     pLocalRangeName1->insert(pLocal5);
-    m_pDoc->SetRangeName(pGlobalRangeName);
+    m_pDoc->SetRangeName(std::move(pGlobalRangeName));
     m_pDoc->SetRangeName(0, pLocalRangeName1);
 
     // Add formula to B1.
diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx
index 1d801ee73fc6..0f2c50f9d204 100644
--- a/sc/qa/unit/ucalc_sharedformula.cxx
+++ b/sc/qa/unit/ucalc_sharedformula.cxx
@@ -1473,11 +1473,11 @@ void Test::testSharedFormulaUpdateOnNamedRangeChange()
     aName.mpName = pName;
     aName.mpExpr = pExpr1;
     aName.mnIndex = 1;
-    ScRangeName* pNames = new ScRangeName;
-    bool bSuccess = insertRangeNames(m_pDoc, pNames, &aName, &aName + 1);
+    std::unique_ptr<ScRangeName> pNames(new ScRangeName);
+    bool bSuccess = insertRangeNames(m_pDoc, pNames.get(), &aName, &aName + 1);
     CPPUNIT_ASSERT(bSuccess);
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pNames->size());
-    m_pDoc->SetRangeName(pNames);
+    m_pDoc->SetRangeName(std::move(pNames));
 
     // Set values to A1:A4.
     m_pDoc->SetValue(ScAddress(0,0,0), 1.0);
@@ -1525,9 +1525,9 @@ void Test::testSharedFormulaUpdateOnNamedRangeChange()
     CPPUNIT_ASSERT_EQUAL(2.0, m_pDoc->GetValue(ScAddress(2,0,0)));
 
     // Update the range of MyRange.
-    pNames = new ScRangeName;
+    pNames.reset(new ScRangeName);
     aName.mpExpr = pExpr2;
-    bSuccess = insertRangeNames(m_pDoc, pNames, &aName, &aName + 1);
+    bSuccess = insertRangeNames(m_pDoc, pNames.get(), &aName, &aName + 1);
     CPPUNIT_ASSERT(bSuccess);
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pNames->size());
     ScDocFunc& rFunc = getDocShell().GetDocFunc();
@@ -1535,7 +1535,7 @@ void Test::testSharedFormulaUpdateOnNamedRangeChange()
     typedef std::map<OUString, std::unique_ptr<ScRangeName>> NameMapType;
     NameMapType aNewNames;
     OUString aScope(STR_GLOBAL_RANGE_NAME);
-    aNewNames.insert(std::make_pair(aScope, std::unique_ptr<ScRangeName>(pNames)));
+    aNewNames.insert(std::make_pair(aScope, std::move(pNames)));
     rFunc.ModifyAllRangeNames(aNewNames);
 
     // Check to make sure all displayed formulas are still good.
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 9e866abbd125..f1e3628e9687 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -361,7 +361,7 @@ long ScColumn::GetNeededSize(
         MapMode aHMMMode( MapUnit::Map100thMM, Point(), rZoomX, rZoomY );
 
         // save in document ?
-        ScFieldEditEngine* pEngine = pDocument->CreateFieldEditEngine();
+        std::unique_ptr<ScFieldEditEngine> pEngine = pDocument->CreateFieldEditEngine();
 
         pEngine->SetUpdateMode( false );
         bool bTextWysiwyg = ( pDev->GetOutDevType() == OUTDEV_PRINTER );
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index 2db842f8e78f..bcb7599e658c 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -235,17 +235,15 @@ ScDocument::ScDocument( ScDocumentMode eMode, SfxObjectShell* pDocShell ) :
     {
         mxPoolHelper = new ScPoolHelper( this );
 
-        pBASM = new ScBroadcastAreaSlotMachine( this );
+        pBASM.reset( new ScBroadcastAreaSlotMachine( this ) );
         pChartListenerCollection = new ScChartListenerCollection( this );
-        pRefreshTimerControl = new ScRefreshTimerControl;
+        pRefreshTimerControl.reset( new ScRefreshTimerControl );
     }
     else
     {
-        pBASM       = nullptr;
         pChartListenerCollection = nullptr;
-        pRefreshTimerControl = nullptr;
     }
-    pDBCollection = new ScDBCollection(this);
+    pDBCollection.reset( new ScDBCollection(this) );
     pSelectionAttr = nullptr;
     apTemporaryChartLock.reset( new ScTemporaryChartLock(this) );
     xColNameRanges = new ScRangePairList;
@@ -306,22 +304,21 @@ sal_uInt32 ScDocument::GetDocumentID() const
 void ScDocument::StartChangeTracking()
 {
     if (!pChangeTrack)
-        pChangeTrack = new ScChangeTrack( this );
+        pChangeTrack.reset( new ScChangeTrack( this ) );
 }
 
 void ScDocument::EndChangeTracking()
 {
-    delete pChangeTrack;
-    pChangeTrack = nullptr;
+    pChangeTrack.reset();
 }
 
-void ScDocument::SetChangeTrack( ScChangeTrack* pTrack )
+void ScDocument::SetChangeTrack( std::unique_ptr<ScChangeTrack> pTrack )
 {
     OSL_ENSURE( pTrack->GetDocument() == this, "SetChangeTrack: different documents" );
     if ( !pTrack || pTrack == pChangeTrack || pTrack->GetDocument() != this )
         return ;
     EndChangeTracking();
-    pChangeTrack = pTrack;
+    pChangeTrack = std::move(pTrack);
 }
 
 IMPL_LINK_NOARG(ScDocument, TrackTimeHdl, Timer *, void)
@@ -378,8 +375,7 @@ ScDocument::~ScDocument()
     {   // To be sure there isn't anything running do it with a protector,
         // this ensures also that nothing needs the control anymore.
         ScRefreshTimerProtector aProt( GetRefreshTimerControlAddress() );
-        delete pRefreshTimerControl;
-        pRefreshTimerControl = nullptr;
+        pRefreshTimerControl.reset();
     }
 
     if (IsClipboardSource())
@@ -407,14 +403,12 @@ ScDocument::~ScDocument()
     DELETEZ(maThreadSpecific.pLookupCacheMapImpl);
 
     // destroy BroadcastAreas first to avoid un-needed Single-EndListenings of Formula-Cells
-    delete pBASM;       // BroadcastAreaSlotMachine
-    pBASM = nullptr;
+    pBASM.reset();       // BroadcastAreaSlotMachine
 
-    delete pUnoBroadcaster;     // broadcasts SfxHintId::Dying again
-    pUnoBroadcaster = nullptr;
+    pUnoBroadcaster.reset();     // broadcasts SfxHintId::Dying again
 
-    delete pUnoRefUndoList;
-    delete pUnoListenerCalls;
+    pUnoRefUndoList.reset();
+    pUnoListenerCalls.reset();
 
     Clear( true );              // true = from destructor (needed for SdrModel::ClearModel)
 
@@ -425,38 +419,37 @@ ScDocument::~ScDocument()
         pValidationList->clear();
         DELETEZ(pValidationList);
     }
-    delete pRangeName;
-    delete pDBCollection;
-    delete pSelectionAttr;
+    pRangeName.reset();
+    pDBCollection.reset();
+    pSelectionAttr.reset();
     apTemporaryChartLock.reset();
     DeleteDrawLayer();
-    delete pFormatExchangeList;
     mpPrinter.disposeAndClear();
     ImplDeleteOptions();
-    delete pConsolidateDlgData;
-    delete pClipData;
-    delete pDetOpList;                  // also deletes entries
-    delete pChangeTrack;
-    delete mpEditEngine;
-    delete mpNoteEngine;
-    delete pChangeViewSettings;         // and delete
+    pConsolidateDlgData.reset();
+    pClipData.reset();
+    pDetOpList.reset();                  // also deletes entries
+    pChangeTrack.reset();
+    mpEditEngine.reset();
+    mpNoteEngine.reset();
+    pChangeViewSettings.reset();         // and delete
     mpVirtualDevice_100th_mm.disposeAndClear();
 
-    delete pDPCollection;
-    delete mpAnonymousDBData;
+    pDPCollection.reset();
+    mpAnonymousDBData.reset();
 
     // delete the EditEngine before destroying the mxPoolHelper
-    delete pCacheFieldEditEngine;
+    pCacheFieldEditEngine.reset();
 
     if ( mxPoolHelper.is() && !bIsClip && !bIsUndo)
         mxPoolHelper->SourceDocumentGone();
     mxPoolHelper.clear();
 
-    delete pScriptTypeData;
+    pScriptTypeData.reset();
     delete maNonThreaded.pRecursionHelper;
     delete maThreadSpecific.pRecursionHelper;
 
-    delete pPreviewFont;
+    pPreviewFont.reset();
     SAL_WARN_IF( pAutoNameCache, "sc.core", "AutoNameCache still set in dtor" );
 
     mpFormulaGroupCxt.reset();
@@ -488,14 +481,12 @@ void ScDocument::InitClipPtrs( ScDocument* pSourceDoc )
         pValidationList = new ScValidationDataList(this, *pSourceValid);
 
     // store Links in Stream
-    delete pClipData;
+    pClipData.reset();
     if (pSourceDoc->GetDocLinkManager().hasDdeLinks())
     {
-        pClipData = new SvMemoryStream;
+        pClipData.reset( new SvMemoryStream );
         pSourceDoc->SaveDdeLinks(*pClipData);
     }
-    else
-        pClipData = nullptr;
 
     // Options pointers exist (ImplCreateOptions) for any document.
     // Must be copied for correct results in OLE objects (#i42666#).
@@ -523,7 +514,7 @@ ScFieldEditEngine& ScDocument::GetEditEngine()
 {
     if ( !mpEditEngine )
     {
-        mpEditEngine = new ScFieldEditEngine(this, GetEnginePool(), GetEditPool());
+        mpEditEngine.reset( new ScFieldEditEngine(this, GetEnginePool(), GetEditPool()) );
         mpEditEngine->SetUpdateMode( false );
         mpEditEngine->EnableUndo( false );
         mpEditEngine->SetRefMapMode(MapMode(MapUnit::Map100thMM));
@@ -537,7 +528,7 @@ ScNoteEditEngine& ScDocument::GetNoteEngine()
     if ( !mpNoteEngine )
     {
         ScMutationGuard aGuard(this, ScMutationGuardFlags::CORE);
-        mpNoteEngine = new ScNoteEditEngine( GetEnginePool(), GetEditPool() );
+        mpNoteEngine.reset( new ScNoteEditEngine( GetEnginePool(), GetEditPool() ) );
         mpNoteEngine->SetUpdateMode( false );
         mpNoteEngine->EnableUndo( false );
         mpNoteEngine->SetRefMapMode(MapMode(MapUnit::Map100thMM));
@@ -1036,7 +1027,7 @@ sal_uLong ScDocument::TransferTab( ScDocument* pSrcDoc, SCTAB nSrcPos,
             sc::CopyToDocContext aCxt(*this);
             nDestPos = std::min(nDestPos, static_cast<SCTAB>(GetTableCount() - 1));
             {   // scope for bulk broadcast
-                ScBulkBroadcast aBulkBroadcast( pBASM, SfxHintId::ScDataChanged);
+                ScBulkBroadcast aBulkBroadcast( pBASM.get(), SfxHintId::ScDataChanged);
                 if (!bResultsOnly)
                 {
                     const bool bGlobalNamesToLocal = false;
@@ -1173,33 +1164,26 @@ bool ScDocument::SetFormulaCells( const ScAddress& rPos, std::vector<ScFormulaCe
     return pTab->SetFormulaCells(rPos.Col(), rPos.Row(), rCells);
 }
 
-void ScDocument::SetConsolidateDlgData( const ScConsolidateParam* pData )
+void ScDocument::SetConsolidateDlgData( std::unique_ptr<ScConsolidateParam> pData )
 {
-    delete pConsolidateDlgData;
-
-    if ( pData )
-        pConsolidateDlgData = new ScConsolidateParam( *pData );
-    else
-        pConsolidateDlgData = nullptr;
+    pConsolidateDlgData = std::move(pData);
 }
 
 void ScDocument::SetChangeViewSettings(const ScChangeViewSettings& rNew)
 {
     if (pChangeViewSettings==nullptr)
-        pChangeViewSettings = new ScChangeViewSettings;
-
-    OSL_ENSURE( pChangeViewSettings, "Oops. No ChangeViewSettings :-( by!" );
+        pChangeViewSettings.reset( new ScChangeViewSettings );
 
     *pChangeViewSettings=rNew;
 }
 
-ScFieldEditEngine* ScDocument::CreateFieldEditEngine()
+std::unique_ptr<ScFieldEditEngine> ScDocument::CreateFieldEditEngine()
 {
-    ScFieldEditEngine* pNewEditEngine = nullptr;
+    std::unique_ptr<ScFieldEditEngine> pNewEditEngine;
     if (!pCacheFieldEditEngine)
     {
-        pNewEditEngine = new ScFieldEditEngine(
-            this, GetEnginePool(), GetEditPool(), false);
+        pNewEditEngine.reset( new ScFieldEditEngine(
+            this, GetEnginePool(), GetEditPool(), false) );
     }
     else
     {
@@ -1211,22 +1195,20 @@ ScFieldEditEngine* ScDocument::CreateFieldEditEngine()
                 pCacheFieldEditEngine->SetUpdateMode(true);
         }
 
-        pNewEditEngine = pCacheFieldEditEngine;
-        pCacheFieldEditEngine = nullptr;
+        pNewEditEngine = std::move(pCacheFieldEditEngine);
     }
     return pNewEditEngine;
 }
 
-void ScDocument::DisposeFieldEditEngine(ScFieldEditEngine*& rpEditEngine)
+void ScDocument::DisposeFieldEditEngine(std::unique_ptr<ScFieldEditEngine>& rpEditEngine)
 {
     if (!pCacheFieldEditEngine && rpEditEngine)
     {
-        pCacheFieldEditEngine = rpEditEngine;
+        pCacheFieldEditEngine = std::move( rpEditEngine );
         pCacheFieldEditEngine->Clear();
     }
     else
-        delete rpEditEngine;
-    rpEditEngine = nullptr;
+        rpEditEngine.reset();
 }
 
 ScRecursionHelper* ScDocument::CreateRecursionHelperInstance()
@@ -1491,10 +1473,9 @@ void ScDocument::GetCellChangeTrackNote( const ScAddress &aCellPos, OUString &aT
     }
 }
 
-void ScDocument::SetPreviewFont( SfxItemSet* pFont )
+void ScDocument::SetPreviewFont( std::unique_ptr<SfxItemSet> pFont )
 {
-    delete pPreviewFont;
-    pPreviewFont = pFont;
+    pPreviewFont = std::move(pFont);
 }
 
 void  ScDocument::SetPreviewSelection( const ScMarkData& rSel )
@@ -1509,7 +1490,7 @@ SfxItemSet* ScDocument::GetPreviewFont( SCCOL nCol, SCROW nRow, SCTAB nTab )
     {
         ScMarkData aSel = GetPreviewSelection();
         if ( aSel.IsCellMarked( nCol, nRow ) && aSel.GetFirstSelected() == nTab )
-            pRet = pPreviewFont;
+            pRet = pPreviewFont.get();
     }
     return pRet;
 }
diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx
index 70afce47b4e3..4dc59a8127e7 100644
--- a/sc/source/core/data/documen3.cxx
+++ b/sc/source/core/data/documen3.cxx
@@ -131,12 +131,10 @@ void ScDocument::SetAllRangeNames(const std::map<OUString, std::unique_ptr<ScRan
     {
         if (itr->first == STR_GLOBAL_RANGE_NAME)
         {
-            delete pRangeName;
+            pRangeName.reset();
             const ScRangeName *const pName = itr->second.get();
-            if (pName->empty())
-                pRangeName = nullptr;
-            else
-                pRangeName = new ScRangeName( *pName );
+            if (!pName->empty())
+                pRangeName.reset( new ScRangeName( *pName ) );
         }
         else
         {
@@ -170,10 +168,10 @@ void ScDocument::GetRangeNameMap(std::map<OUString, ScRangeName*>& aRangeNameMap
     }
     if (!pRangeName)
     {
-        pRangeName = new ScRangeName();
+        pRangeName.reset(new ScRangeName());
     }
     OUString aGlobal(STR_GLOBAL_RANGE_NAME);
-    aRangeNameMap.insert(std::pair<OUString, ScRangeName*>(aGlobal, pRangeName));
+    aRangeNameMap.insert(std::pair<OUString, ScRangeName*>(aGlobal, pRangeName.get()));
 }
 
 ScRangeName* ScDocument::GetRangeName(SCTAB nTab) const
@@ -187,8 +185,8 @@ ScRangeName* ScDocument::GetRangeName(SCTAB nTab) const
 ScRangeName* ScDocument::GetRangeName() const
 {
     if (!pRangeName)
-        pRangeName = new ScRangeName;
-    return pRangeName;
+        pRangeName.reset(new ScRangeName);
+    return pRangeName.get();
 }
 
 void ScDocument::SetRangeName(SCTAB nTab, ScRangeName* pNew)
@@ -199,13 +197,9 @@ void ScDocument::SetRangeName(SCTAB nTab, ScRangeName* pNew)
     return maTabs[nTab]->SetRangeName(pNew);
 }
 
-void ScDocument::SetRangeName( ScRangeName* pNewRangeName )
+void ScDocument::SetRangeName( std::unique_ptr<ScRangeName> pNewRangeName )
 {
-    if (pRangeName == pNewRangeName)
-        return;
-
-    delete pRangeName;
-    pRangeName = pNewRangeName;
+    pRangeName = std::move(pNewRangeName);
 }
 
 bool ScDocument::IsAddressInRangeName( RangeNameScope eScope, ScAddress& rAddress )
@@ -270,7 +264,7 @@ ScRangeData* ScDocument::FindRangeNameBySheetAndIndex( SCTAB nTab, sal_uInt16 nI
     return (pRN ? pRN->findByIndex( nIndex) : nullptr);
 }
 
-void ScDocument::SetDBCollection( ScDBCollection* pNewDBCollection, bool bRemoveAutoFilter )
+void ScDocument::SetDBCollection( std::unique_ptr<ScDBCollection> pNewDBCollection, bool bRemoveAutoFilter )
 {
     if (pDBCollection && bRemoveAutoFilter)
     {
@@ -315,9 +309,7 @@ void ScDocument::SetDBCollection( ScDBCollection* pNewDBCollection, bool bRemove
         }
     }
 
-    delete pDBCollection;
-
-    pDBCollection = pNewDBCollection;
+    pDBCollection = std::move(pNewDBCollection);
 }
 
 const ScDBData* ScDocument::GetDBAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab, ScDBDataPortion ePortion) const
@@ -366,13 +358,13 @@ bool ScDocument::HasPivotTable() const
 ScDPCollection* ScDocument::GetDPCollection()
 {
     if (!pDPCollection)
-        pDPCollection = new ScDPCollection(this);
-    return pDPCollection;
+        pDPCollection.reset( new ScDPCollection(this) );
+    return pDPCollection.get();
 }
 
 const ScDPCollection* ScDocument::GetDPCollection() const
 {
-    return pDPCollection;
+    return pDPCollection.get();
 }
 
 ScDPObject* ScDocument::GetDPAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab) const
@@ -898,7 +890,7 @@ bool ScDocument::TestCopyScenario( SCTAB nSrcTab, SCTAB nDestTab ) const
 void ScDocument::AddUnoObject( SfxListener& rObject )
 {
     if (!pUnoBroadcaster)
-        pUnoBroadcaster = new SfxBroadcaster;
+        pUnoBroadcaster.reset( new SfxBroadcaster );
 
     rObject.StartListening( *pUnoBroadcaster );
 }
@@ -980,23 +972,20 @@ void ScDocument::AddUnoListenerCall( const uno::Reference<util::XModifyListener>
     OSL_ENSURE( bInUnoBroadcast, "AddUnoListenerCall is supposed to be called from BroadcastUno only" );
 
     if ( !pUnoListenerCalls )
-        pUnoListenerCalls = new ScUnoListenerCalls;
+        pUnoListenerCalls.reset( new ScUnoListenerCalls );
     pUnoListenerCalls->Add( rListener, rEvent );
 }
 
 void ScDocument::BeginUnoRefUndo()
 {
     OSL_ENSURE( !pUnoRefUndoList, "BeginUnoRefUndo twice" );
-    delete pUnoRefUndoList;
-
-    pUnoRefUndoList = new ScUnoRefList;
+    pUnoRefUndoList.reset( new ScUnoRefList );
 }
 
-ScUnoRefList* ScDocument::EndUnoRefUndo()
+std::unique_ptr<ScUnoRefList> ScDocument::EndUnoRefUndo()
 {
-    ScUnoRefList* pRet = pUnoRefUndoList;
-    pUnoRefUndoList = nullptr;
-    return pRet; // Must be deleted by caller!
+    return std::move(pUnoRefUndoList);
+    // Must be deleted by caller!
 }
 
 void ScDocument::AddUnoRefChange( sal_Int64 nId, const ScRangeList& rOldRanges )
diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx
index 8a0753382e94..0b387179e306 100644
--- a/sc/source/core/data/documen4.cxx
+++ b/sc/source/core/data/documen4.cxx
@@ -908,21 +908,19 @@ bool ScDocument::HasDetectiveOperations() const
 void ScDocument::AddDetectiveOperation( const ScDetOpData& rData )
 {
     if (!pDetOpList)
-        pDetOpList = new ScDetOpList;
+        pDetOpList.reset(new ScDetOpList);
 
     pDetOpList->Append( new ScDetOpData( rData ) );
 }
 
 void ScDocument::ClearDetectiveOperations()
 {
-    delete pDetOpList;      // deletes also the entries
-    pDetOpList = nullptr;
+    pDetOpList.reset();      // deletes also the entries
 }
 
-void ScDocument::SetDetOpList(ScDetOpList* pNew)
+void ScDocument::SetDetOpList(std::unique_ptr<ScDetOpList> pNew)
 {
-    delete pDetOpList;      // deletes also the entries
-    pDetOpList = pNew;
+    pDetOpList = std::move(pNew);
 }
 
 // Comparison of Documents
diff --git a/sc/source/core/data/documen6.cxx b/sc/source/core/data/documen6.cxx
index d4b8a41db979..fe414517b429 100644
--- a/sc/source/core/data/documen6.cxx
+++ b/sc/source/core/data/documen6.cxx
@@ -42,7 +42,7 @@ using namespace com::sun::star;
 const uno::Reference< i18n::XBreakIterator >& ScDocument::GetBreakIterator()
 {
     if ( !pScriptTypeData )
-        pScriptTypeData = new ScScriptTypeData;
+        pScriptTypeData.reset( new ScScriptTypeData );
     if ( !pScriptTypeData->xBreakIter.is() )
     {
         pScriptTypeData->xBreakIter = i18n::BreakIterator::create( comphelper::getProcessComponentContext() );
diff --git a/sc/source/core/data/documen7.cxx b/sc/source/core/data/documen7.cxx
index b35d760137a1..63e14bba26ea 100644
--- a/sc/source/core/data/documen7.cxx
+++ b/sc/source/core/data/documen7.cxx
@@ -129,7 +129,7 @@ void ScDocument::Broadcast( const ScHint& rHint )
         return ;    // Clipboard or Undo
     if ( eHardRecalcState == HardRecalcState::OFF )
     {
-        ScBulkBroadcast aBulkBroadcast( pBASM, rHint.GetId());     // scoped bulk broadcast
+        ScBulkBroadcast aBulkBroadcast( pBASM.get(), rHint.GetId());     // scoped bulk broadcast
         bool bIsBroadcasted = false;
         SvtBroadcaster* pBC = GetBroadcaster(rHint.GetAddress());
         if ( pBC )
@@ -165,7 +165,7 @@ void ScDocument::BroadcastCells( const ScRange& rRange, SfxHintId nHint, bool bB
 
     if (eHardRecalcState == HardRecalcState::OFF)
     {
-        ScBulkBroadcast aBulkBroadcast( pBASM, nHint);     // scoped bulk broadcast
+        ScBulkBroadcast aBulkBroadcast( pBASM.get(), nHint);     // scoped bulk broadcast
         bool bIsBroadcasted = false;
 
         if (bBroadcastSingleBroadcasters)
@@ -293,7 +293,7 @@ void ScDocument::AreaBroadcast( const ScHint& rHint )
         return ;    // Clipboard or Undo
     if (eHardRecalcState == HardRecalcState::OFF)
     {
-        ScBulkBroadcast aBulkBroadcast( pBASM, rHint.GetId());     // scoped bulk broadcast
+        ScBulkBroadcast aBulkBroadcast( pBASM.get(), rHint.GetId());     // scoped bulk broadcast
         if ( pBASM->AreaBroadcast( rHint ) )
             TrackFormulas( rHint.GetId() );
     }
diff --git a/sc/source/core/data/documen9.cxx b/sc/source/core/data/documen9.cxx
index 8cc833062bf8..70b99bdf03e5 100644
--- a/sc/source/core/data/documen9.cxx
+++ b/sc/source/core/data/documen9.cxx
@@ -519,8 +519,7 @@ void ScDocument::Clear( bool bFromDestructor )
         delete *it;
 
     maTabs.clear();
-    delete pSelectionAttr;
-    pSelectionAttr = nullptr;
+    pSelectionAttr.reset();
 
     if (mpDrawLayer)
     {
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 7f4649e7c9d2..f9de8433ed13 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -319,15 +319,14 @@ void ScDocument::SetAnonymousDBData(SCTAB nTab, ScDBData* pDBData)
         maTabs[nTab]->SetAnonymousDBData(pDBData);
 }
 
-void ScDocument::SetAnonymousDBData( ScDBData* pDBData )
+void ScDocument::SetAnonymousDBData( std::unique_ptr<ScDBData> pDBData )
 {
-    delete mpAnonymousDBData;
-    mpAnonymousDBData = pDBData;
+    mpAnonymousDBData = std::move(pDBData);
 }
 
 ScDBData* ScDocument::GetAnonymousDBData()
 {
-    return mpAnonymousDBData;
+    return mpAnonymousDBData.get();
 }
 
 bool ScDocument::ValidTabName( const OUString& rName )
@@ -2449,7 +2448,7 @@ void ScDocument::CopyRangeNamesToClip(ScDocument* pClipDoc, const ScRange& rClip
 
     /* TODO: handle also sheet-local names */
     sc::UpdatedRangeNames::NameIndicesType aUsedGlobalNames( aUsedNames.getUpdatedNames(-1));
-    copyUsedNamesToClip(pClipDoc->GetRangeName(), pRangeName, aUsedGlobalNames);
+    copyUsedNamesToClip(pClipDoc->GetRangeName(), pRangeName.get(), aUsedGlobalNames);
 }
 
 ScDocument::NumFmtMergeHandler::NumFmtMergeHandler(ScDocument* pDoc, const ScDocument* pSrcDoc) :
@@ -5033,7 +5032,7 @@ void ScDocument::SetPattern( const ScAddress& rPos, const ScPatternAttr& rAttr )
         maTabs[nTab]->SetPattern( rPos, rAttr );
 }
 
-ScPatternAttr* ScDocument::CreateSelectionPattern( const ScMarkData& rMark, bool bDeep )
+std::unique_ptr<ScPatternAttr> ScDocument::CreateSelectionPattern( const ScMarkData& rMark, bool bDeep )
 {
     ScMergePatternState aState;
 
@@ -5061,21 +5060,20 @@ ScPatternAttr* ScDocument::CreateSelectionPattern( const ScMarkData& rMark, bool
     OSL_ENSURE( aState.pItemSet, "SelectionPattern Null" );
     if (aState.pItemSet)
     {
-        ScPatternAttr* pPattern = new ScPatternAttr( std::move(aState.pItemSet) );
+        std::unique_ptr<ScPatternAttr> pPattern(new ScPatternAttr( std::move(aState.pItemSet) ));
         if (aState.mbValidPatternId)
             pPattern->SetKey(aState.mnPatternId);
 
         return pPattern;
     }
     else
-        return new ScPatternAttr( GetPool() );      // empty
+        return std::unique_ptr<ScPatternAttr>(new ScPatternAttr( GetPool() )); // empty
 }
 
 const ScPatternAttr* ScDocument::GetSelectionPattern( const ScMarkData& rMark )
 {
-    delete pSelectionAttr;
     pSelectionAttr = CreateSelectionPattern( rMark );
-    return pSelectionAttr;
+    return pSelectionAttr.get();
 }
 
 void ScDocument::GetSelectionFrame( const ScMarkData& rMark,
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx
index 04cfe1c0bb3e..ec230436ac26 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -462,8 +462,8 @@ void adjustDBRange(formula::FormulaToken* pToken, ScDocument& rNewDoc, const ScD
     ScDBCollection* pNewDBCollection = rNewDoc.GetDBCollection();
     if (!pNewDBCollection)
     {
-        pNewDBCollection = new ScDBCollection(&rNewDoc);
-        rNewDoc.SetDBCollection(pNewDBCollection);
+        rNewDoc.SetDBCollection(std::unique_ptr<ScDBCollection>(new ScDBCollection(&rNewDoc)));
+        pNewDBCollection = rNewDoc.GetDBCollection();
     }
     ScDBCollection::NamedDBs& aNewNamedDBs = pNewDBCollection->getNamedDBs();
     ScDBData* pNewDBData = aNewNamedDBs.findByUpperName(aDBName);
diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx
index 44f1ab7e2cdc..7045a24a5d9c 100644
--- a/sc/source/core/tool/chgtrack.cxx
+++ b/sc/source/core/tool/chgtrack.cxx
@@ -4437,7 +4437,7 @@ ScChangeTrack* ScChangeTrack::Clone( ScDocument* pDocument ) const
         return nullptr;
     }
 
-    ScChangeTrack* pClonedTrack = new ScChangeTrack( pDocument );
+    std::unique_ptr<ScChangeTrack> pClonedTrack(new ScChangeTrack( pDocument ));
     pClonedTrack->SetTimeNanoSeconds( IsTimeNanoSeconds() );
 
     // clone generated actions
@@ -4517,7 +4517,7 @@ ScChangeTrack* ScChangeTrack::Clone( ScDocument* pDocument ) const
                         pAction->GetComment(),
                         eType,
                         nD,
-                        pClonedTrack );
+                        pClonedTrack.get() );
                 }
                 break;
             case SC_CAT_MOVE:
@@ -4534,7 +4534,7 @@ ScChangeTrack* ScChangeTrack::Clone( ScDocument* pDocument ) const
                         pAction->GetDateTimeUTC(),
                         pAction->GetComment(),
                         pMove->GetFromRange(),
-                        pClonedTrack );
+                        pClonedTrack.get() );
                 }
                 break;
             case SC_CAT_CONTENT:
@@ -4687,9 +4687,10 @@ ScChangeTrack* ScChangeTrack::Clone( ScDocument* pDocument ) const
         pClonedTrack->SetLastSavedActionNumber( pClonedTrack->GetLast()->GetActionNumber() );
     }
 
-    pDocument->SetChangeTrack( pClonedTrack );
+    auto tmp = pClonedTrack.get();
+    pDocument->SetChangeTrack( std::move(pClonedTrack) );
 
-    return pClonedTrack;
+    return tmp;
 }
 
 void ScChangeTrack::MergeActionState( ScChangeAction* pAct, const ScChangeAction* pOtherAct )
diff --git a/sc/source/core/tool/refreshtimer.cxx b/sc/source/core/tool/refreshtimer.cxx
index 3db86b814be3..72ff16679af6 100644
--- a/sc/source/core/tool/refreshtimer.cxx
+++ b/sc/source/core/tool/refreshtimer.cxx
@@ -28,14 +28,14 @@ void ScRefreshTimerControl::SetAllowRefresh( bool b )
         ++nBlockRefresh;
 }
 
-ScRefreshTimerProtector::ScRefreshTimerProtector( ScRefreshTimerControl * const & rp )
+ScRefreshTimerProtector::ScRefreshTimerProtector( std::unique_ptr<ScRefreshTimerControl> const & rp )
         :
         m_rpControl( rp )
 {
     if ( m_rpControl )
     {
         m_rpControl->SetAllowRefresh( false );
-        // wait for any running refresh in another thread to finnish
+        // wait for any running refresh in another thread to finish
         ::osl::MutexGuard aGuard( m_rpControl->GetMutex() );
     }
 }
@@ -84,7 +84,7 @@ bool ScRefreshTimer::operator!=( const ScRefreshTimer& r ) const
     return !ScRefreshTimer::operator==( r );
 }
 
-void ScRefreshTimer::SetRefreshControl( ScRefreshTimerControl * const * pp )
+void ScRefreshTimer::SetRefreshControl( std::unique_ptr<ScRefreshTimerControl> const * pp )
 {
     ppControl = pp;
 }
diff --git a/sc/source/filter/inc/XclImpChangeTrack.hxx b/sc/source/filter/inc/XclImpChangeTrack.hxx
index 82e1f2bb74af..9f374472e76c 100644
--- a/sc/source/filter/inc/XclImpChangeTrack.hxx
+++ b/sc/source/filter/inc/XclImpChangeTrack.hxx
@@ -54,7 +54,7 @@ private:
     XclImpChTrRecHeader         aRecHeader;
     OUString                    sOldUsername;
 
-    ScChangeTrack*              pChangeTrack;
+    std::unique_ptr<ScChangeTrack> pChangeTrack;
     tools::SvRef<SotStorageStream>          xInStrm;        // input stream
     XclImpStream*               pStrm;          // stream import class
     sal_uInt16                  nTabIdCount;
diff --git a/sc/source/filter/oox/revisionfragment.cxx b/sc/source/filter/oox/revisionfragment.cxx
index bacde362a7ab..bd38fb4ffb0d 100644
--- a/sc/source/filter/oox/revisionfragment.cxx
+++ b/sc/source/filter/oox/revisionfragment.cxx
@@ -269,7 +269,7 @@ void RevisionHeadersFragment::finalizeImport()
 
     pCT->SetUser(aSelfUser); // set the default user to the document owner.
     pCT->SetUseFixDateTime(false);
-    rDoc.SetChangeTrack(pCT.release());
+    rDoc.SetChangeTrack(std::move(pCT));
 
     // Turn on visibility of tracked changes.
     ScChangeViewSettings aSettings;
diff --git a/sc/source/filter/xcl97/XclImpChangeTrack.cxx b/sc/source/filter/xcl97/XclImpChangeTrack.cxx
index 797075a8b08d..8a943ce5aa79 100644
--- a/sc/source/filter/xcl97/XclImpChangeTrack.cxx
+++ b/sc/source/filter/xcl97/XclImpChangeTrack.cxx
@@ -58,7 +58,7 @@ XclImpChangeTrack::XclImpChangeTrack( const XclImpRoot& rRoot, const XclImpStrea
             xInStrm->Seek( STREAM_SEEK_TO_BEGIN );
             pStrm = new XclImpStream( *xInStrm, GetRoot() );
             pStrm->CopyDecrypterFrom( rBookStrm );
-            pChangeTrack = new ScChangeTrack( &GetDocRef() );
+            pChangeTrack.reset(new ScChangeTrack( &GetDocRef() ));
 
             sOldUsername = pChangeTrack->GetUser();
             pChangeTrack->SetUseFixDateTime( true );
@@ -70,7 +70,7 @@ XclImpChangeTrack::XclImpChangeTrack( const XclImpRoot& rRoot, const XclImpStrea
 
 XclImpChangeTrack::~XclImpChangeTrack()
 {
-    delete pChangeTrack;
+    pChangeTrack.reset();
     delete pStrm;
 }
 
@@ -491,8 +491,7 @@ void XclImpChangeTrack::Apply()
         pChangeTrack->SetUser( sOldUsername );
         pChangeTrack->SetUseFixDateTime( false );
 
-        GetDoc().SetChangeTrack( pChangeTrack );
-        pChangeTrack = nullptr;
+        GetDoc().SetChangeTrack( std::move(pChangeTrack) );
 
         ScChangeViewSettings aSettings;
         aSettings.SetShowChanges( true );
diff --git a/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx b/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx
index f3147046c2fd..3144fe1ece3c 100644
--- a/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx
+++ b/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx
@@ -887,7 +887,7 @@ void ScXMLChangeTrackingImportHelper::CreateChangeTrack(ScDocument* pTempDoc)
         if ( pTrack->GetLast() )
             pTrack->SetLastSavedActionNumber(pTrack->GetLast()->GetActionNumber());
 
-        pDoc->SetChangeTrack(pTrack);
+        pDoc->SetChangeTrack(std::unique_ptr<ScChangeTrack>(pTrack));
     }
 }
 
diff --git a/sc/source/filter/xml/XMLConsolidationContext.cxx b/sc/source/filter/xml/XMLConsolidationContext.cxx
index cfdbe34a18db..f27b4b1508de 100644
--- a/sc/source/filter/xml/XMLConsolidationContext.cxx
+++ b/sc/source/filter/xml/XMLConsolidationContext.cxx
@@ -77,11 +77,11 @@ void SAL_CALL ScXMLConsolidationContext::endFastElement( sal_Int32 /*nElement*/
 {
     if (bTargetAddr)
     {
-        ScConsolidateParam aConsParam;
-        aConsParam.nCol = aTargetAddr.Col();
-        aConsParam.nRow = aTargetAddr.Row();
-        aConsParam.nTab = aTargetAddr.Tab();
-        aConsParam.eFunction = eFunction;
+        std::unique_ptr<ScConsolidateParam> pConsParam(new ScConsolidateParam);
+        pConsParam->nCol = aTargetAddr.Col();
+        pConsParam->nRow = aTargetAddr.Row();
+        pConsParam->nTab = aTargetAddr.Tab();
+        pConsParam->eFunction = eFunction;
 
         sal_uInt16 nCount = static_cast<sal_uInt16>(std::min( ScRangeStringConverter::GetTokenCount( sSourceList ), sal_Int32(0xFFFF) ));
         ScArea** ppAreas = nCount ? new ScArea*[ nCount ] : nullptr;
@@ -99,7 +99,7 @@ void SAL_CALL ScXMLConsolidationContext::endFastElement( sal_Int32 /*nElement*/
                 }
             }
 
-            aConsParam.SetAreas( ppAreas, nCount );
+            pConsParam->SetAreas( ppAreas, nCount );
 
             // array is copied in SetAreas
             for( nIndex = 0; nIndex < nCount; ++nIndex )
@@ -107,19 +107,19 @@ void SAL_CALL ScXMLConsolidationContext::endFastElement( sal_Int32 /*nElement*/
             delete[] ppAreas;
         }
 
-        aConsParam.bByCol = aConsParam.bByRow = false;
+        pConsParam->bByCol = pConsParam->bByRow = false;
         if( IsXMLToken(sUseLabel, XML_COLUMN ) )
-            aConsParam.bByCol = true;
+            pConsParam->bByCol = true;
         else if( IsXMLToken( sUseLabel, XML_ROW ) )
-            aConsParam.bByRow = true;
+            pConsParam->bByRow = true;
         else if( IsXMLToken( sUseLabel, XML_BOTH ) )
-            aConsParam.bByCol = aConsParam.bByRow = true;
+            pConsParam->bByCol = pConsParam->bByRow = true;
 
-        aConsParam.bReferenceData = bLinkToSource;
+        pConsParam->bReferenceData = bLinkToSource;
 
         ScDocument* pDoc = GetScImport().GetDocument();
         if( pDoc )
-            pDoc->SetConsolidateDlgData( &aConsParam );
+            pDoc->SetConsolidateDlgData( std::move(pConsParam) );
     }
 }
 
diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx
index c85589ac9a73..c6f64e737540 100644
--- a/sc/source/filter/xml/xmlimprt.cxx
+++ b/sc/source/filter/xml/xmlimprt.cxx
@@ -1137,9 +1137,9 @@ void ScXMLImport::SetConfigurationSettings(const uno::Sequence<beans::PropertyVa
                             else
                             {
                                 std::set<OUString> aUsers;
-                                ScChangeTrack* pTrack = new ScChangeTrack(pDoc, aUsers);
+                                std::unique_ptr<ScChangeTrack> pTrack( new ScChangeTrack(pDoc, aUsers) );
                                 pTrack->SetProtection(aPass);
-                                pDoc->SetChangeTrack(pTrack);
+                                pDoc->SetChangeTrack(std::move(pTrack));
                             }
                         }
                     }
diff --git a/sc/source/ui/Accessibility/AccessibleText.cxx b/sc/source/ui/Accessibility/AccessibleText.cxx
index 4842d7b211c6..66bcc5f4ad88 100644
--- a/sc/source/ui/Accessibility/AccessibleText.cxx
+++ b/sc/source/ui/Accessibility/AccessibleText.cxx
@@ -1251,7 +1251,7 @@ SvxTextForwarder* ScAccessiblePreviewHeaderCellTextData::GetTextForwarder()
         {
             SfxItemPool* pEnginePool = EditEngine::CreatePool();
             pEnginePool->FreezeIdRanges();
-            pEditEngine = new ScFieldEditEngine(nullptr, pEnginePool, nullptr, true);
+            pEditEngine.reset( new ScFieldEditEngine(nullptr, pEnginePool, nullptr, true) );
         }
         pEditEngine->EnableUndo( false );
         if (pDocShell)
@@ -1443,7 +1443,7 @@ ScAccessibleNoteTextData::~ScAccessibleNoteTextData()
         mpDocSh->GetDocument().RemoveUnoObject(*this);
     if (mpEditEngine)
         mpEditEngine->SetNotifyHdl(Link<EENotify&,void>());
-    delete mpEditEngine;
+    mpEditEngine.reset();
     delete mpForwarder;
 }
 
@@ -1476,7 +1476,7 @@ SvxTextForwarder* ScAccessibleNoteTextData::GetTextForwarder()
         {
             SfxItemPool* pEnginePool = EditEngine::CreatePool();
             pEnginePool->FreezeIdRanges();
-            mpEditEngine = new ScFieldEditEngine(nullptr, pEnginePool, nullptr, true);
+            mpEditEngine.reset( new ScFieldEditEngine(nullptr, pEnginePool, nullptr, true) );
         }
         mpEditEngine->EnableUndo( false );
         if (mpDocSh)
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index 7e21ade37edd..3a409e774d64 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -163,7 +163,7 @@ bool ScDBDocFunc::RenameDBRange( const OUString& rOld, const OUString& rNew )
 
         ScDBData* pNewData = new ScDBData(rNew, **iterOld);
 
-        ScDBCollection* pUndoColl = new ScDBCollection( *pDocColl );
+        std::unique_ptr<ScDBCollection> pUndoColl( new ScDBCollection( *pDocColl ) );
 
         rDoc.PreprocessDBDataUpdate();
         rDBs.erase(iterOld);
@@ -171,7 +171,7 @@ bool ScDBDocFunc::RenameDBRange( const OUString& rOld, const OUString& rNew )
         if (!bInserted)                             // error -> restore old state
         {
             delete pNewData;
-            rDoc.SetDBCollection(pUndoColl);       // belongs to the document then
+            rDoc.SetDBCollection(std::move(pUndoColl));       // belongs to the document then
         }
 
         rDoc.CompileHybridFormula();
@@ -182,10 +182,10 @@ bool ScDBDocFunc::RenameDBRange( const OUString& rOld, const OUString& rNew )
             {
                 ScDBCollection* pRedoColl = new ScDBCollection( *pDocColl );
                 rDocShell.GetUndoManager()->AddUndoAction(
-                                new ScUndoDBData( &rDocShell, pUndoColl, pRedoColl ) );
+                                new ScUndoDBData( &rDocShell, pUndoColl.release(), pRedoColl ) );
             }
             else
-                delete pUndoColl;
+                pUndoColl.reset();
 
             aModificator.SetDocumentModified();
             SfxGetpApp()->Broadcast( SfxHint( SfxHintId::ScDbAreasChanged ) );
@@ -264,7 +264,7 @@ void ScDBDocFunc::ModifyAllDBData( const ScDBCollection& rNewColl, const std::ve
     //  register target in SBA no longer necessary
 
     rDoc.PreprocessDBDataUpdate();
-    rDoc.SetDBCollection( new ScDBCollection( rNewColl ) );
+    rDoc.SetDBCollection( std::unique_ptr<ScDBCollection>(new ScDBCollection( rNewColl )) );
     rDoc.CompileHybridFormula();
     pOldColl = nullptr;
     rDocShell.PostPaint(ScRange(0, 0, 0, MAXCOL, MAXROW, MAXTAB), PaintPartFlags::Grid);
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 1e4e6556c9b3..80c99cef7f40 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -5037,7 +5037,7 @@ void ScDocFunc::SetNewRangeNames( ScRangeName* pNewRanges, bool bModifyDoc, SCTA
     if (nTab >= 0)
         rDoc.SetRangeName( nTab, pNewRanges ); // takes ownership
     else
-        rDoc.SetRangeName( pNewRanges );       // takes ownership
+        rDoc.SetRangeName( std::unique_ptr<ScRangeName>(pNewRanges) );       // takes ownership
     if ( bCompile )
         rDoc.CompileHybridFormula();
 
diff --git a/sc/source/ui/docshell/docsh5.cxx b/sc/source/ui/docshell/docsh5.cxx
index acd05f0ec21b..3eae94341395 100644
--- a/sc/source/ui/docshell/docsh5.cxx
+++ b/sc/source/ui/docshell/docsh5.cxx
@@ -232,9 +232,9 @@ ScDBData* ScDocShell::GetDBData( const ScRange& rMarked, ScGetDBMode eMode, ScGe
                 pNoNameData = aDocument.GetAnonymousDBData();
                 if (!pNoNameData)
                 {
-                    pNoNameData = new ScDBData( STR_DB_LOCAL_NONAME,
-                            nTab, nStartCol, nStartRow, nEndCol, nEndRow, true, bHasHeader);
-                    aDocument.SetAnonymousDBData( pNoNameData);
+                    aDocument.SetAnonymousDBData( std::unique_ptr<ScDBData>(new ScDBData( STR_DB_LOCAL_NONAME,
+                            nTab, nStartCol, nStartRow, nEndCol, nEndRow, true, bHasHeader) ) );
+                    pNoNameData = aDocument.GetAnonymousDBData();
                 }
                 // ScDocShell::CancelAutoDBRange() would restore the
                 // sheet-local anonymous DBData from pOldAutoDBRange, unset so
diff --git a/sc/source/ui/inc/AccessibleText.hxx b/sc/source/ui/inc/AccessibleText.hxx
index 940b854b7d13..c36c63f02cab 100644
--- a/sc/source/ui/inc/AccessibleText.hxx
+++ b/sc/source/ui/inc/AccessibleText.hxx
@@ -245,7 +245,7 @@ public:
 private:
     ScPreviewViewForwarder* mpViewForwarder;
     ScPreviewShell*         mpViewShell;
-    ScEditEngineDefaulter*  mpEditEngine;
+    std::unique_ptr<ScEditEngineDefaulter> mpEditEngine;
     SvxEditEngineForwarder* mpForwarder;
     ScDocShell*             mpDocSh;
     OUString                msText;
diff --git a/sc/source/ui/inc/refundo.hxx b/sc/source/ui/inc/refundo.hxx
index 12d267ce0da9..c3e4466f8733 100644
--- a/sc/source/ui/inc/refundo.hxx
+++ b/sc/source/ui/inc/refundo.hxx
@@ -20,6 +20,7 @@
 #ifndef INCLUDED_SC_SOURCE_UI_INC_REFUNDO_HXX
 #define INCLUDED_SC_SOURCE_UI_INC_REFUNDO_HXX
 
+#include <memory>
 
 class ScDocument;
 class ScDBCollection;
@@ -41,7 +42,7 @@ private:
     ScDetOpList*                pDetOpList;
     ScChartListenerCollection*  pChartListenerCollection;
     ScAreaLinkSaveCollection*   pAreaLinks;
-    ScUnoRefList*               pUnoRefs;
+    std::unique_ptr<ScUnoRefList> pUnoRefs;
 
 public:
                 ScRefUndoData( const ScDocument* pDoc );
diff --git a/sc/source/ui/undo/refundo.cxx b/sc/source/ui/undo/refundo.cxx
index 7488465e63af..857120cc69da 100644
--- a/sc/source/ui/undo/refundo.cxx
+++ b/sc/source/ui/undo/refundo.cxx
@@ -80,7 +80,6 @@ ScRefUndoData::~ScRefUndoData()
     delete pDetOpList;
     delete pChartListenerCollection;
     delete pAreaLinks;
-    delete pUnoRefs;
 }
 
 void ScRefUndoData::DeleteUnchanged( const ScDocument* pDoc )
@@ -140,7 +139,7 @@ void ScRefUndoData::DeleteUnchanged( const ScDocument* pDoc )
         pUnoRefs = const_cast<ScDocument*>(pDoc)->EndUnoRefUndo();
         if ( pUnoRefs && pUnoRefs->IsEmpty() )
         {
-            DELETEZ( pUnoRefs );
+            pUnoRefs.reset();
         }
     }
 }
@@ -148,9 +147,9 @@ void ScRefUndoData::DeleteUnchanged( const ScDocument* pDoc )
 void ScRefUndoData::DoUndo( ScDocument* pDoc, bool bUndoRefFirst )
 {
     if (pDBCollection)
-        pDoc->SetDBCollection( new ScDBCollection(*pDBCollection) );
+        pDoc->SetDBCollection( std::unique_ptr<ScDBCollection>(new ScDBCollection(*pDBCollection)) );
     if (pRangeName)
-        pDoc->SetRangeName( new ScRangeName(*pRangeName) );
+        pDoc->SetRangeName( std::unique_ptr<ScRangeName>(new ScRangeName(*pRangeName)) );
 
     if (pPrintRanges)
         pDoc->RestorePrintRanges(*pPrintRanges);
@@ -163,7 +162,7 @@ void ScRefUndoData::DoUndo( ScDocument* pDoc, bool bUndoRefFirst )
     }
 
     if (pDetOpList)
-        pDoc->SetDetOpList( new ScDetOpList(*pDetOpList) );
+        pDoc->SetDetOpList( std::unique_ptr<ScDetOpList>(new ScDetOpList(*pDetOpList)) );
 
     // bUndoRefFirst is bSetChartRangeLists
     if ( pChartListenerCollection )
diff --git a/sc/source/ui/undo/undocell.cxx b/sc/source/ui/undo/undocell.cxx
index 522914ec9cdc..9e8e09a1bb6f 100644
--- a/sc/source/ui/undo/undocell.cxx
+++ b/sc/source/ui/undo/undocell.cxx
@@ -912,7 +912,7 @@ void ScUndoDetective::Undo()
     if (bIsDelete)
     {
         if ( pOldList )
-            rDoc.SetDetOpList( new ScDetOpList(*pOldList) );
+            rDoc.SetDetOpList( std::unique_ptr<ScDetOpList>(new ScDetOpList(*pOldList)) );
     }
     else
     {
@@ -999,14 +999,14 @@ void ScUndoRangeNames::DoChange( bool bUndo )
         if (mnTab >= 0)
             rDoc.SetRangeName( mnTab, new ScRangeName( *pOldRanges ) );
         else
-            rDoc.SetRangeName( new ScRangeName( *pOldRanges ) );
+            rDoc.SetRangeName( std::unique_ptr<ScRangeName>(new ScRangeName( *pOldRanges )) );
     }
     else
     {
         if (mnTab >= 0)
             rDoc.SetRangeName( mnTab, new ScRangeName( *pNewRanges ) );
         else
-            rDoc.SetRangeName( new ScRangeName( *pNewRanges ) );
+            rDoc.SetRangeName( std::unique_ptr<ScRangeName>(new ScRangeName( *pNewRanges )) );
     }
 
     rDoc.CompileHybridFormula();
diff --git a/sc/source/ui/undo/undodat.cxx b/sc/source/ui/undo/undodat.cxx
index d3cef474a5d0..afaed1811b1e 100644
--- a/sc/source/ui/undo/undodat.cxx
+++ b/sc/source/ui/undo/undodat.cxx
@@ -656,9 +656,9 @@ void ScUndoSubTotals::Undo()
                                             aParam.nCol2,aParam.nRow2,nTab );
 
     if (xUndoRange)
-        rDoc.SetRangeName(new ScRangeName(*xUndoRange));
+        rDoc.SetRangeName(std::unique_ptr<ScRangeName>(new ScRangeName(*xUndoRange)));
     if (xUndoDB)
-        rDoc.SetDBCollection(new ScDBCollection(*xUndoDB), true);
+        rDoc.SetDBCollection(std::unique_ptr<ScDBCollection>(new ScDBCollection(*xUndoDB)), true);
 
     SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
     if ( nVisTab != nTab )
@@ -796,7 +796,7 @@ void ScUndoQuery::Undo()
                                  InsertDeleteFlags::NONE, false, rDoc);
 
     if (xUndoDB)
-        rDoc.SetDBCollection(new ScDBCollection(*xUndoDB ), true);
+        rDoc.SetDBCollection(std::unique_ptr<ScDBCollection>(new ScDBCollection(*xUndoDB )), true);
 
     if (!bCopy)
     {
@@ -980,7 +980,7 @@ void ScUndoDBData::Undo()
     bool bOldAutoCalc = rDoc.GetAutoCalc();
     rDoc.SetAutoCalc( false );         // Avoid unnecessary calculations
     rDoc.PreprocessDBDataUpdate();
-    rDoc.SetDBCollection( new ScDBCollection(*pUndoColl), true );
+    rDoc.SetDBCollection( std::unique_ptr<ScDBCollection>(new ScDBCollection(*pUndoColl)), true );
     rDoc.CompileHybridFormula();
     rDoc.SetAutoCalc( bOldAutoCalc );
 
@@ -998,7 +998,7 @@ void ScUndoDBData::Redo()
     bool bOldAutoCalc = rDoc.GetAutoCalc();
     rDoc.SetAutoCalc( false );         // Avoid unnecessary calculations
     rDoc.PreprocessDBDataUpdate();
-    rDoc.SetDBCollection( new ScDBCollection(*pRedoColl), true );
+    rDoc.SetDBCollection( std::unique_ptr<ScDBCollection>(new ScDBCollection(*pRedoColl)), true );
     rDoc.CompileHybridFormula();
     rDoc.SetAutoCalc( bOldAutoCalc );
 
@@ -1333,9 +1333,9 @@ void ScUndoRepeatDB::Undo()
                                             aBlockEnd.Col(),aBlockEnd.Row(),nTab );
 
     if (xUndoRange)
-        rDoc.SetRangeName(new ScRangeName(*xUndoRange));
+        rDoc.SetRangeName(std::unique_ptr<ScRangeName>(new ScRangeName(*xUndoRange)));
     if (xUndoDB)
-        rDoc.SetDBCollection(new ScDBCollection(*xUndoDB), true);
+        rDoc.SetDBCollection(std::unique_ptr<ScDBCollection>(new ScDBCollection(*xUndoDB)), true);
 
     SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
     if ( nVisTab != nTab )
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx
index 0e6b0ef4e16a..c5830ce06c56 100644
--- a/sc/source/ui/unoobj/cellsuno.cxx
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -1485,12 +1485,10 @@ ScCellRangesBase::~ScCellRangesBase()
 
 void ScCellRangesBase::ForgetCurrentAttrs()
 {
-    delete pCurrentFlat;
-    delete pCurrentDeep;
+    pCurrentFlat.reset();
+    pCurrentDeep.reset();
     delete pCurrentDataSet;
     delete pNoDfltCurrentDataSet;
-    pCurrentFlat = nullptr;
-    pCurrentDeep = nullptr;
     pCurrentDataSet = nullptr;
     pNoDfltCurrentDataSet = nullptr;
 
@@ -1512,7 +1510,7 @@ const ScPatternAttr* ScCellRangesBase::GetCurrentAttrsFlat()
         ScDocument& rDoc = pDocShell->GetDocument();
         pCurrentFlat = rDoc.CreateSelectionPattern( *GetMarkData(), false );
     }
-    return pCurrentFlat;
+    return pCurrentFlat.get();
 }
 
 const ScPatternAttr* ScCellRangesBase::GetCurrentAttrsDeep()
@@ -1524,7 +1522,7 @@ const ScPatternAttr* ScCellRangesBase::GetCurrentAttrsDeep()
         ScDocument& rDoc = pDocShell->GetDocument();
         pCurrentDeep = rDoc.CreateSelectionPattern( *GetMarkData() );
     }
-    return pCurrentDeep;
+    return pCurrentDeep.get();
 }
 
 SfxItemSet* ScCellRangesBase::GetCurrentDataSet(bool bNoDflt)
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 88e1a43dd7b8..c60b03778692 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -2328,7 +2328,7 @@ void SAL_CALL ScModelObj::consolidate(
     {
         const ScConsolidateParam& rParam = xImpl->GetParam();
         pDocShell->DoConsolidate( rParam );
-        pDocShell->GetDocument().SetConsolidateDlgData( &rParam );
+        pDocShell->GetDocument().SetConsolidateDlgData( std::unique_ptr<ScConsolidateParam>(new ScConsolidateParam(rParam)) );
     }
 }
 
diff --git a/sc/source/ui/unoobj/textuno.cxx b/sc/source/ui/unoobj/textuno.cxx
index ee4600b6627c..5d4576636105 100644
--- a/sc/source/ui/unoobj/textuno.cxx
+++ b/sc/source/ui/unoobj/textuno.cxx
@@ -889,7 +889,7 @@ ScCellTextData::~ScCellTextData()
         pDocShell->GetDocument().DisposeFieldEditEngine(pEditEngine);
     }
     else
-        delete pEditEngine;
+        pEditEngine.reset();
 
     delete pForwarder;
 
@@ -916,7 +916,7 @@ SvxTextForwarder* ScCellTextData::GetTextForwarder()
         {
             SfxItemPool* pEnginePool = EditEngine::CreatePool();
             pEnginePool->FreezeIdRanges();
-            pEditEngine = new ScFieldEditEngine(nullptr, pEnginePool, nullptr, true);
+            pEditEngine.reset( new ScFieldEditEngine(nullptr, pEnginePool, nullptr, true) );
         }
         //  currently, GetPortions doesn't work if UpdateMode is sal_False,
         //  this will be fixed (in EditEngine) by src600
@@ -1004,7 +1004,7 @@ void ScCellTextData::Notify( SfxBroadcaster&, const SfxHint& rHint )
             pDocShell = nullptr;                       // invalid now
 
             DELETEZ( pForwarder );
-            DELETEZ( pEditEngine );     // EditEngine uses document's pool
+            pEditEngine.reset();     // EditEngine uses document's pool
         }
         else if ( nId == SfxHintId::DataChanged )
         {
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index 93779d60752b..a36745ce4fc8 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -1851,7 +1851,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                             static_cast<const ScConsolidateItem*>(pItem)->GetData();
 
                     pTabViewShell->Consolidate( rParam );
-                    GetViewData()->GetDocument()->SetConsolidateDlgData( &rParam );
+                    GetViewData()->GetDocument()->SetConsolidateDlgData( std::unique_ptr<ScConsolidateParam>(new ScConsolidateParam(rParam)) );
 
                     rReq.Done();
                 }
diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx
index d75204e3546d..364ab9c654ef 100644
--- a/sc/source/ui/view/formatsh.cxx
+++ b/sc/source/ui/view/formatsh.cxx
@@ -1775,7 +1775,7 @@ void ScFormatShell::ExecuteAttr( SfxRequest& rReq )
 
                 ScMarkData aFuncMark( pViewData->GetMarkData() );
                 ScViewUtil::UnmarkFiltered( aFuncMark, pDoc );
-                pDoc->SetPreviewFont( aSetItem.GetItemSet().Clone() );
+                pDoc->SetPreviewFont( std::unique_ptr<SfxItemSet>(aSetItem.GetItemSet().Clone()) );
                 aFuncMark.MarkToMulti();
 
                 if ( !aFuncMark.IsMarked() && !aFuncMark.IsMultiMarked() )


More information about the Libreoffice-commits mailing list