[Libreoffice-commits] core.git: include/formula include/o3tl include/svtools package/source sc/inc sc/qa sc/source sd/source sw/inc sw/source

Caolán McNamara caolanm at redhat.com
Sat Oct 21 08:37:05 UTC 2017


 include/formula/formula.hxx                                  |    5 -
 include/o3tl/deleter.hxx                                     |   50 ++++++++++
 include/svtools/ivctrl.hxx                                   |    3 
 include/svtools/templatefoldercache.hxx                      |    4 
 package/source/xstor/xstorage.hxx                            |    3 
 sc/inc/document.hxx                                          |    3 
 sc/inc/funcuno.hxx                                           |    4 
 sc/qa/unit/ucalc.cxx                                         |    4 
 sc/qa/unit/ucalc_sharedformula.cxx                           |    2 
 sc/source/core/data/document.cxx                             |    4 
 sc/source/filter/inc/XclExpChangeTrack.hxx                   |    3 
 sc/source/ui/dataprovider/htmldataprovider.hxx               |    2 
 sc/source/ui/docshell/dbdocfun.cxx                           |   14 +-
 sc/source/ui/docshell/docfunc.cxx                            |    6 -
 sc/source/ui/docshell/docfuncutil.cxx                        |    6 -
 sc/source/ui/docshell/documentlinkmgr.cxx                    |    4 
 sc/source/ui/docshell/impex.cxx                              |    2 
 sc/source/ui/inc/dataprovider.hxx                            |    2 
 sc/source/ui/inc/docfuncutil.hxx                             |    4 
 sc/source/ui/inc/spelldialog.hxx                             |    7 -
 sc/source/ui/inc/tabvwsh.hxx                                 |    3 
 sc/source/ui/inc/undoblk.hxx                                 |   54 +++++------
 sc/source/ui/inc/undodat.hxx                                 |   30 +++---
 sc/source/ui/inc/undotab.hxx                                 |    2 
 sc/source/ui/undo/undoblk.cxx                                |    2 
 sc/source/ui/undo/undoblk3.cxx                               |    2 
 sc/source/ui/unoobj/funcuno.cxx                              |    2 
 sc/source/ui/view/cellsh2.cxx                                |    6 -
 sc/source/ui/view/dbfunc3.cxx                                |    2 
 sc/source/ui/view/preview.cxx                                |    8 -
 sc/source/ui/view/printfun.cxx                               |    2 
 sc/source/ui/view/tabvwsh4.cxx                               |    3 
 sc/source/ui/view/viewfun2.cxx                               |    4 
 sc/source/ui/view/viewfun3.cxx                               |   18 +--
 sc/source/ui/view/viewfun5.cxx                               |    2 
 sd/source/ui/framework/module/ToolBarModule.hxx              |    3 
 sd/source/ui/func/fuolbull.cxx                               |    4 
 sd/source/ui/func/fuoltext.cxx                               |    2 
 sd/source/ui/inc/OutlineView.hxx                             |    3 
 sd/source/ui/inc/ViewShellImplementation.hxx                 |    4 
 sd/source/ui/inc/ViewShellManager.hxx                        |    3 
 sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx |    3 
 sd/source/ui/slidesorter/inc/view/SlideSorterView.hxx        |    3 
 sd/source/ui/view/ToolBarManager.cxx                         |    3 
 sd/source/ui/view/drtxtob1.cxx                               |    2 
 sd/source/ui/view/outlnvs2.cxx                               |    2 
 sd/source/ui/view/outlnvsh.cxx                               |    2 
 sw/inc/list.hxx                                              |    3 
 sw/source/uibase/app/applab.cxx                              |    3 
 sw/source/uibase/dochdl/swdtflvr.cxx                         |    3 
 50 files changed, 190 insertions(+), 125 deletions(-)

New commits:
commit e26f8d2592a3d7cc5b43b3246b364397dd704f0d
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Aug 25 11:09:38 2017 +0100

    coverity#1401307 document checked 'Uncaught exception'
    
    markup std::unique_ptr where coverity warns a dtor might throw exceptions which
    won't throw in practice, or where std::terminate is an acceptable response if
    they do
    
    Change-Id: Icc99cdecf8d8b011e599574f0a05b59efd1c65c2
    Reviewed-on: https://gerrit.libreoffice.org/41561
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/formula/formula.hxx b/include/formula/formula.hxx
index 82e8246bc9b0..4c9d37e807b0 100644
--- a/include/formula/formula.hxx
+++ b/include/formula/formula.hxx
@@ -25,6 +25,7 @@
 
 #include <formula/formuladllapi.h>
 #include <formula/IFunctionDescription.hxx>
+#include <o3tl/deleter.hxx>
 #include <rtl/ustring.hxx>
 #include <sal/types.h>
 #include <sfx2/basedlgs.hxx>
@@ -69,7 +70,7 @@ public:
     virtual void dispose() override;
 
 private:
-    ::std::unique_ptr<FormulaDlg_Impl> m_pImpl;
+    std::unique_ptr<FormulaDlg_Impl, o3tl::default_delete<FormulaDlg_Impl>> m_pImpl;
 
 protected:
 
@@ -99,7 +100,7 @@ public:
     virtual ~FormulaDlg() override;
     virtual void dispose() override;
 private:
-    ::std::unique_ptr<FormulaDlg_Impl> m_pImpl;
+    std::unique_ptr<FormulaDlg_Impl, o3tl::default_delete<FormulaDlg_Impl>> m_pImpl;
 
     DECL_LINK( UpdateFocusHdl, Timer*, void );
 protected:
diff --git a/include/o3tl/deleter.hxx b/include/o3tl/deleter.hxx
new file mode 100644
index 000000000000..5b5e67929a15
--- /dev/null
+++ b/include/o3tl/deleter.hxx
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_O3TL_DELETER_HXX
+#define INCLUDED_O3TL_DELETER_HXX
+
+#include <com/sun/star/uno/Exception.hpp>
+
+namespace o3tl {
+
+/** To markup std::unique_ptr that coverity warns might throw exceptions
+    which won't throw in practice, or where std::terminate is
+    an acceptable response if they do
+*/
+template<typename T> struct default_delete
+{
+    void operator() (T* p) noexcept
+    {
+#if defined(__COVERITY__)
+        try
+        {
+            delete p;
+        }
+        catch (const css::uno::Exception& e)
+        {
+            SAL_WARN("vcl.app", "Fatal exception: " << e.Message);
+            std::terminate();
+        }
+        catch (const std::exception& e)
+        {
+            SAL_WARN("vcl.app", "Fatal exception: " << e.what());
+            std::terminate();
+        }
+#else
+        delete p;
+#endif
+    }
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svtools/ivctrl.hxx b/include/svtools/ivctrl.hxx
index 3cb0171f35cf..3d7a4842ca91 100644
--- a/include/svtools/ivctrl.hxx
+++ b/include/svtools/ivctrl.hxx
@@ -27,6 +27,7 @@
 #include <tools/contnr.hxx>
 #include <vcl/image.hxx>
 #include <vcl/seleng.hxx>
+#include <o3tl/deleter.hxx>
 #include <o3tl/typed_flags_set.hxx>
 
 class Point;
@@ -189,7 +190,7 @@ class SVT_DLLPUBLIC SvtIconChoiceCtrl : public Control
     friend class SvxIconChoiceCtrl_Impl;
 
     Link<SvtIconChoiceCtrl*,void>  _aClickIconHdl;
-    std::unique_ptr<SvxIconChoiceCtrl_Impl>        _pImpl;
+    std::unique_ptr<SvxIconChoiceCtrl_Impl, o3tl::default_delete<SvxIconChoiceCtrl_Impl>> _pImpl;
 
 protected:
 
diff --git a/include/svtools/templatefoldercache.hxx b/include/svtools/templatefoldercache.hxx
index 842f19111b99..cee6bcbecc1b 100644
--- a/include/svtools/templatefoldercache.hxx
+++ b/include/svtools/templatefoldercache.hxx
@@ -22,9 +22,9 @@
 
 #include <svtools/svtdllapi.h>
 #include <sal/types.h>
+#include <o3tl/deleter.hxx>
 #include <memory>
 
-
 namespace svt
 {
 
@@ -60,7 +60,7 @@ namespace svt
     class SVT_DLLPUBLIC TemplateFolderCache
     {
     private:
-        std::unique_ptr<TemplateFolderCacheImpl>     m_pImpl;
+        std::unique_ptr<TemplateFolderCacheImpl, o3tl::default_delete<TemplateFolderCacheImpl>> m_pImpl;
 
     public:
         /** ctor.
diff --git a/package/source/xstor/xstorage.hxx b/package/source/xstor/xstorage.hxx
index 1b7532fd34ee..532088359184 100644
--- a/package/source/xstor/xstorage.hxx
+++ b/package/source/xstor/xstorage.hxx
@@ -48,6 +48,7 @@
 #include <cppuhelper/interfacecontainer.h>
 #include <comphelper/refcountedmutex.hxx>
 #include <comphelper/sequenceashashmap.hxx>
+#include <o3tl/deleter.hxx>
 #include <rtl/ref.hxx>
 
 #include <list>
@@ -86,7 +87,7 @@ struct SotElement_Impl
     bool                    m_bIsStorage;
 
     std::unique_ptr<OStorage_Impl> m_xStorage;
-    std::unique_ptr<OWriteStream_Impl> m_xStream;
+    std::unique_ptr<OWriteStream_Impl, o3tl::default_delete<OWriteStream_Impl>> m_xStream;
 
 public:
     SotElement_Impl(const OUString& rName, bool bStor, bool bNew);
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 35ea5104b090..a2a073a68ab2 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -36,6 +36,7 @@
 #include "typedstrdata.hxx"
 #include "calcmacros.hxx"
 #include "calcconfig.hxx"
+#include <o3tl/deleter.hxx>
 #include <svl/hint.hxx>
 #include <tools/gen.hxx>
 #include <svl/zforlist.hxx>
@@ -2386,6 +2387,8 @@ private:
     void SetNeedsListeningGroups( const std::vector<ScAddress>& rPosArray );
 };
 
+typedef std::unique_ptr<ScDocument, o3tl::default_delete<ScDocument>> ScDocumentUniquePtr;
+
 #endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/inc/funcuno.hxx b/sc/inc/funcuno.hxx
index cf0dc8065a1b..174975c8a1f9 100644
--- a/sc/inc/funcuno.hxx
+++ b/sc/inc/funcuno.hxx
@@ -26,8 +26,8 @@
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <cppuhelper/implbase.hxx>
 #include <svl/lstner.hxx>
+#include "document.hxx"
 
-class ScDocument;
 class ScDocOptions;
 
 css::uno::Reference< css::uno::XInterface > SAL_CALL
@@ -37,7 +37,7 @@ css::uno::Reference< css::uno::XInterface > SAL_CALL
 class ScTempDocCache
 {
 private:
-    std::unique_ptr<ScDocument> xDoc;
+    ScDocumentUniquePtr xDoc;
     bool            bInUse;
 
 public:
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 21278e9385ce..02ac5a86acbc 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -3500,7 +3500,7 @@ void Test::testCopyPasteTranspose()
     ScDocument aNewClipDoc(SCDOCMODE_CLIP);
     copyToClip(m_pDoc, aSrcRange, &aNewClipDoc);
 
-    ::std::unique_ptr<ScDocument> pTransClip(new ScDocument(SCDOCMODE_CLIP));
+    ScDocumentUniquePtr pTransClip(new ScDocument(SCDOCMODE_CLIP));
     aNewClipDoc.TransposeClip(pTransClip.get(), InsertDeleteFlags::ALL, false);
 
     ScRange aDestRange = ScRange(3,1,1,3,3,1);//target: Sheet2.D2:D4
@@ -5953,7 +5953,7 @@ void Test::testDeleteContents()
     aMark.SelectOneTable(0);
     aMark.SetMarkArea(aRange);
 
-    std::unique_ptr<ScDocument> pUndoDoc(new ScDocument(SCDOCMODE_UNDO));
+    ScDocumentUniquePtr pUndoDoc(new ScDocument(SCDOCMODE_UNDO));
     pUndoDoc->InitUndo(m_pDoc, 0, 0);
     m_pDoc->CopyToDocument(aRange, InsertDeleteFlags::CONTENTS, false, *pUndoDoc, &aMark);
     ScUndoDeleteContents aUndo(&getDocShell(), aMark, aRange, std::move(pUndoDoc), false, InsertDeleteFlags::CONTENTS, true);
diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx
index 8a72cb88d88d..4244861528ad 100644
--- a/sc/qa/unit/ucalc_sharedformula.cxx
+++ b/sc/qa/unit/ucalc_sharedformula.cxx
@@ -1764,7 +1764,7 @@ void Test::testSharedFormulaUpdateOnReplacement()
     ScMarkData aMark;
     aMark.SelectOneTable(0);
     aMark.SetMultiMarkArea(aUndoRange);
-    std::unique_ptr<ScDocument> pUndoDoc(new ScDocument(SCDOCMODE_UNDO));
+    ScDocumentUniquePtr pUndoDoc(new ScDocument(SCDOCMODE_UNDO));
     pUndoDoc->InitUndo(m_pDoc, 0, 0);
     m_pDoc->CopyToDocument(aUndoRange, InsertDeleteFlags::CONTENTS, false, *pUndoDoc, &aMark);
     ScUndoDeleteContents aUndo(&getDocShell(), aMark, aUndoRange, std::move(pUndoDoc), false, InsertDeleteFlags::CONTENTS, true);
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 94b96c051836..dc1aa2b1c28f 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -3232,7 +3232,7 @@ void ScDocument::FillTab( const ScRange& rSrcArea, const ScMarkData& rMark,
         SCROW nStartRow = rSrcArea.aStart.Row();
         SCCOL nEndCol = rSrcArea.aEnd.Col();
         SCROW nEndRow = rSrcArea.aEnd.Row();
-        std::unique_ptr<ScDocument> pMixDoc;
+        ScDocumentUniquePtr pMixDoc;
         bool bDoMix = ( bSkipEmpty || nFunction != ScPasteFunc::NONE ) && ( nFlags & InsertDeleteFlags::CONTENTS );
 
         bool bOldAutoCalc = GetAutoCalc();
@@ -3289,7 +3289,7 @@ void ScDocument::FillTabMarked( SCTAB nSrcTab, const ScMarkData& rMark,
 
     if (ValidTab(nSrcTab) && nSrcTab < static_cast<SCTAB>(maTabs.size()) && maTabs[nSrcTab])
     {
-        std::unique_ptr<ScDocument> pMixDoc;
+        ScDocumentUniquePtr pMixDoc;
         bool bDoMix = ( bSkipEmpty || nFunction != ScPasteFunc::NONE ) && ( nFlags & InsertDeleteFlags::CONTENTS );
 
         bool bOldAutoCalc = GetAutoCalc();
diff --git a/sc/source/filter/inc/XclExpChangeTrack.hxx b/sc/source/filter/inc/XclExpChangeTrack.hxx
index 4eede908e7aa..77c6e398874a 100644
--- a/sc/source/filter/inc/XclExpChangeTrack.hxx
+++ b/sc/source/filter/inc/XclExpChangeTrack.hxx
@@ -26,6 +26,7 @@
 #include <rtl/uuid.h>
 #include "bigrange.hxx"
 #include "chgtrack.hxx"
+#include "document.hxx"
 #include "xelink.hxx"
 #include "ftools.hxx"
 #include "excrecds.hxx"
@@ -597,7 +598,7 @@ class XclExpChangeTrack : protected XclExpRoot
     XclExpChTrTabIdBuffer*        pTabIdBuffer;
     TabIdBufferType maBuffers;
 
-    std::unique_ptr<ScDocument> xTempDoc;           // empty document
+    ScDocumentUniquePtr         xTempDoc;           // empty document
 
     XclExpChTrHeader*           pHeader;            // header record for last GUID
     sal_uInt8                   aGUID[ 16 ];        // GUID for action info records
diff --git a/sc/source/ui/dataprovider/htmldataprovider.hxx b/sc/source/ui/dataprovider/htmldataprovider.hxx
index 69398632846f..db438760ea85 100644
--- a/sc/source/ui/dataprovider/htmldataprovider.hxx
+++ b/sc/source/ui/dataprovider/htmldataprovider.hxx
@@ -24,7 +24,7 @@ private:
     ScDocument* mpDocument;
     rtl::Reference<HTMLFetchThread> mxHTMLFetchThread;
 
-    std::unique_ptr<ScDocument> mpDoc;
+    ScDocumentUniquePtr mpDoc;
 
 public:
 
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index 96fc5982fc13..0bb9aa4fed3b 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -1157,7 +1157,7 @@ bool isEditable(ScDocShell& rDocShell, const ScRangeList& rRanges, bool bApi)
     return true;
 }
 
-void createUndoDoc(std::unique_ptr<ScDocument>& pUndoDoc, ScDocument* pDoc, const ScRange& rRange)
+void createUndoDoc(ScDocumentUniquePtr& pUndoDoc, ScDocument* pDoc, const ScRange& rRange)
 {
     SCTAB nTab = rRange.aStart.Tab();
     pUndoDoc.reset(new ScDocument(SCDOCMODE_UNDO));
@@ -1241,8 +1241,8 @@ bool ScDBDocFunc::DataPilotUpdate( ScDPObject* pOldObj, const ScDPObject* pNewOb
     if (!isEditable(rDocShell, aRanges, bApi))
         return false;
 
-    std::unique_ptr<ScDocument> pOldUndoDoc;
-    std::unique_ptr<ScDocument> pNewUndoDoc;
+    ScDocumentUniquePtr pOldUndoDoc;
+    ScDocumentUniquePtr pNewUndoDoc;
 
     ScDPObject aUndoDPObj(*pOldObj); // for undo or revert on failure
 
@@ -1352,7 +1352,7 @@ bool ScDBDocFunc::RemovePivotTable(ScDPObject& rDPObj, bool bRecord, bool bApi)
         }
     }
 
-    std::unique_ptr<ScDocument> pOldUndoDoc;
+    ScDocumentUniquePtr pOldUndoDoc;
     std::unique_ptr<ScDPObject> pUndoDPObj;
 
     if (bRecord)
@@ -1403,7 +1403,7 @@ bool ScDBDocFunc::CreatePivotTable(const ScDPObject& rDPObj, bool bRecord, bool
     if (!isEditable(rDocShell, ScRange(rDPObj.GetOutRange().aStart), bApi))
         return false;
 
-    std::unique_ptr<ScDocument> pNewUndoDoc;
+    ScDocumentUniquePtr pNewUndoDoc;
 
     ScDocument& rDoc = rDocShell.GetDocument();
     if (bRecord && !rDoc.IsUndoEnabled())
@@ -1516,8 +1516,8 @@ bool ScDBDocFunc::UpdatePivotTable(ScDPObject& rDPObj, bool bRecord, bool bApi)
     if (!isEditable(rDocShell, rDPObj.GetOutRange(), bApi))
         return false;
 
-    std::unique_ptr<ScDocument> pOldUndoDoc;
-    std::unique_ptr<ScDocument> pNewUndoDoc;
+    ScDocumentUniquePtr pOldUndoDoc;
+    ScDocumentUniquePtr pNewUndoDoc;
 
     ScDPObject aUndoDPObj(rDPObj); // For undo or revert on failure.
 
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 8cdfa9f12de8..dfbc54582c6b 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -583,7 +583,7 @@ bool ScDocFunc::DeleteContents(
     ScMarkData aMultiMark = rMark;
     aMultiMark.SetMarking(false);       // for MarkToMulti
 
-    std::unique_ptr<ScDocument> pUndoDoc;
+    ScDocumentUniquePtr pUndoDoc;
     bool bMulti = aMultiMark.IsMultiMarked();
     aMultiMark.MarkToMulti();
     aMultiMark.GetMultiMarkArea( aMarkRange );
@@ -688,7 +688,7 @@ bool ScDocFunc::DeleteCell(
     // To keep track of all non-empty cells within the deleted area.
     std::shared_ptr<ScSimpleUndo::DataSpansType> pDataSpans;
 
-    std::unique_ptr<ScDocument> pUndoDoc;
+    ScDocumentUniquePtr pUndoDoc;
     if (bRecord)
     {
         pUndoDoc = sc::DocFuncUtil::createDeleteContentsUndoDoc(rDoc, rMark, rPos, nFlags, false);
@@ -2737,7 +2737,7 @@ bool ScDocFunc::MoveBlock( const ScRange& rSource, const ScAddress& rDestPos,
     SCTAB nDestEndTab = nDestTab+nSrcTabCount-1;
     SCTAB nTab;
 
-    std::unique_ptr<ScDocument> pClipDoc = o3tl::make_unique<ScDocument>(SCDOCMODE_CLIP);
+    ScDocumentUniquePtr pClipDoc(new ScDocument(SCDOCMODE_CLIP));
 
     ScMarkData aSourceMark;
     for (nTab=nStartTab; nTab<=nEndTab; nTab++)
diff --git a/sc/source/ui/docshell/docfuncutil.cxx b/sc/source/ui/docshell/docfuncutil.cxx
index 1eede21b952d..f00fa56608fb 100644
--- a/sc/source/ui/docshell/docfuncutil.cxx
+++ b/sc/source/ui/docshell/docfuncutil.cxx
@@ -42,11 +42,11 @@ bool DocFuncUtil::hasProtectedTab( const ScDocument& rDoc, const ScMarkData& rMa
     return false;
 }
 
-std::unique_ptr<ScDocument> DocFuncUtil::createDeleteContentsUndoDoc(
+ScDocumentUniquePtr DocFuncUtil::createDeleteContentsUndoDoc(
     ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange,
     InsertDeleteFlags nFlags, bool bOnlyMarked )
 {
-    std::unique_ptr<ScDocument> pUndoDoc(new ScDocument(SCDOCMODE_UNDO));
+    ScDocumentUniquePtr pUndoDoc(new ScDocument(SCDOCMODE_UNDO));
     SCTAB nTab = rRange.aStart.Tab();
     pUndoDoc->InitUndo(&rDoc, nTab, nTab);
     SCTAB nTabCount = rDoc.GetTableCount();
@@ -76,7 +76,7 @@ std::unique_ptr<ScDocument> DocFuncUtil::createDeleteContentsUndoDoc(
 
 void DocFuncUtil::addDeleteContentsUndo(
     svl::IUndoManager* pUndoMgr, ScDocShell* pDocSh, const ScMarkData& rMark,
-    const ScRange& rRange, std::unique_ptr<ScDocument>&& pUndoDoc, InsertDeleteFlags nFlags,
+    const ScRange& rRange, ScDocumentUniquePtr&& pUndoDoc, InsertDeleteFlags nFlags,
     const std::shared_ptr<ScSimpleUndo::DataSpansType>& pSpans,
     bool bMulti, bool bDrawUndo )
 {
diff --git a/sc/source/ui/docshell/documentlinkmgr.cxx b/sc/source/ui/docshell/documentlinkmgr.cxx
index c8ba3a48b6d4..aa508dca8ef0 100644
--- a/sc/source/ui/docshell/documentlinkmgr.cxx
+++ b/sc/source/ui/docshell/documentlinkmgr.cxx
@@ -22,7 +22,7 @@
 #include <ddelink.hxx>
 #include <strings.hrc>
 #include <scresid.hxx>
-
+#include <o3tl/deleter.hxx>
 #include <svx/svdoole2.hxx>
 #include <vcl/layout.hxx>
 
@@ -33,7 +33,7 @@ namespace sc {
 struct DocumentLinkManagerImpl
 {
     SfxObjectShell* mpShell;
-    std::unique_ptr<DataStream> mpDataStream;
+    std::unique_ptr<DataStream, o3tl::default_delete<DataStream>> mpDataStream;
     std::unique_ptr<sfx2::LinkManager> mpLinkManager;
 
     DocumentLinkManagerImpl(const DocumentLinkManagerImpl&) = delete;
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index 3fe47e3ef4ee..7a6dca99ad89 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -2152,7 +2152,7 @@ bool ScImportExport::Doc2Dif( SvStream& rStrm )
 bool ScImportExport::Dif2Doc( SvStream& rStrm )
 {
     SCTAB nTab = aRange.aStart.Tab();
-    std::unique_ptr<ScDocument> pImportDoc( new ScDocument( SCDOCMODE_UNDO ) );
+    ScDocumentUniquePtr pImportDoc( new ScDocument( SCDOCMODE_UNDO ) );
     pImportDoc->InitUndo( pDoc, nTab, nTab );
 
     // for DIF in the clipboard, IBM_850 is always used
diff --git a/sc/source/ui/inc/dataprovider.hxx b/sc/source/ui/inc/dataprovider.hxx
index 30e871ee6b0c..c9188eadf6a6 100644
--- a/sc/source/ui/inc/dataprovider.hxx
+++ b/sc/source/ui/inc/dataprovider.hxx
@@ -109,7 +109,7 @@ class CSVDataProvider : public DataProvider
 {
     rtl::Reference<CSVFetchThread> mxCSVFetchThread;
     ScDocument* mpDocument;
-    std::unique_ptr<ScDocument> mpDoc;
+    ScDocumentUniquePtr mpDoc;
 
     void Refresh();
 
diff --git a/sc/source/ui/inc/docfuncutil.hxx b/sc/source/ui/inc/docfuncutil.hxx
index dba17c80464a..74d83757d492 100644
--- a/sc/source/ui/inc/docfuncutil.hxx
+++ b/sc/source/ui/inc/docfuncutil.hxx
@@ -25,13 +25,13 @@ public:
 
     static bool hasProtectedTab( const ScDocument& rDoc, const ScMarkData& rMark );
 
-    static std::unique_ptr<ScDocument> createDeleteContentsUndoDoc(
+    static ScDocumentUniquePtr createDeleteContentsUndoDoc(
         ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange,
         InsertDeleteFlags nFlags, bool bOnlyMarked );
 
     static void addDeleteContentsUndo(
         svl::IUndoManager* pUndoMgr, ScDocShell* pDocSh, const ScMarkData& rMark,
-        const ScRange& rRange, std::unique_ptr<ScDocument>&& pUndoDoc, InsertDeleteFlags nFlags,
+        const ScRange& rRange, ScDocumentUniquePtr&& pUndoDoc, InsertDeleteFlags nFlags,
         const std::shared_ptr<ScSimpleUndo::DataSpansType>& pSpans,
         bool bMulti, bool bDrawUndo );
 
diff --git a/sc/source/ui/inc/spelldialog.hxx b/sc/source/ui/inc/spelldialog.hxx
index af7c7bcb5ff6..f68a6e59906d 100644
--- a/sc/source/ui/inc/spelldialog.hxx
+++ b/sc/source/ui/inc/spelldialog.hxx
@@ -22,13 +22,13 @@
 
 #include <memory>
 #include <svx/SpellDialogChildWindow.hxx>
+#include "document.hxx"
 
 class ScConversionEngineBase;
 class ScSelectionState;
 class ScTabViewShell;
 class ScViewData;
 class ScRangeList;
-class ScDocShell;
 class ScDocument;
 
 /** Specialized spell check dialog child window for Calc.
@@ -73,12 +73,11 @@ private:
 
 private:
     typedef ::std::unique_ptr< ScConversionEngineBase >   ScConvEnginePtr;
-    typedef ::std::unique_ptr< ScDocument >               ScDocumentPtr;
     typedef ::std::unique_ptr< ScSelectionState >         ScSelectionStatePtr;
 
     ScConvEnginePtr     mxEngine;
-    ScDocumentPtr       mxUndoDoc;
-    ScDocumentPtr       mxRedoDoc;
+    ScDocumentUniquePtr mxUndoDoc;
+    ScDocumentUniquePtr mxRedoDoc;
     ScSelectionStatePtr mxOldSel;           /// For cursor position in selection
     tools::SvRef< ScRangeList >
                         mxOldRangeList;     /// Original selection range for comparison.
diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
index 7fd417808646..35fa4d61357a 100644
--- a/sc/source/ui/inc/tabvwsh.hxx
+++ b/sc/source/ui/inc/tabvwsh.hxx
@@ -21,6 +21,7 @@
 #define INCLUDED_SC_SOURCE_UI_INC_TABVWSH_HXX
 
 #include <formula/errorcodes.hxx>
+#include <o3tl/deleter.hxx>
 #include <svx/fmshell.hxx>
 #include <svtools/htmlcfg.hxx>
 #include <sfx2/viewsh.hxx>
@@ -115,7 +116,7 @@ private:
 
     FmFormShell*            pFormShell;
 
-    std::unique_ptr<ScInputHandler> mpInputHandler;              // for OLE input cell
+    std::unique_ptr<ScInputHandler, o3tl::default_delete<ScInputHandler>> mpInputHandler;              // for OLE input cell
 
     ::editeng::SvxBorderLine*           pCurFrameLine;
 
diff --git a/sc/source/ui/inc/undoblk.hxx b/sc/source/ui/inc/undoblk.hxx
index 7239f911d081..5115bc173d20 100644
--- a/sc/source/ui/inc/undoblk.hxx
+++ b/sc/source/ui/inc/undoblk.hxx
@@ -153,7 +153,7 @@ public:
 
 private:
     ScMarkData          aMarkData;
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                         pUndoDoc;
     ScRange             aExtendedRange;
     sal_uLong           nStartChangeAction;
@@ -254,7 +254,7 @@ public:
                     ScUndoDeleteContents( ScDocShell* pNewDocShell,
                                           const ScMarkData& rMark,
                                           const ScRange& rRange,
-                                          std::unique_ptr<ScDocument>&& pNewUndoDoc, bool bNewMulti,
+                                          ScDocumentUniquePtr&& pNewUndoDoc, bool bNewMulti,
                                           InsertDeleteFlags nNewFlags, bool bObjects );
     virtual         ~ScUndoDeleteContents() override;
 
@@ -272,7 +272,7 @@ private:
 
     ScRange         aRange;
     ScMarkData      aMarkData;
-    std::unique_ptr<ScDocument> pUndoDoc; // Block mark and deleted data
+    ScDocumentUniquePtr pUndoDoc; // Block mark and deleted data
     SdrUndoAction*  pDrawUndo;      // Deleted objects
     sal_uLong       nStartChangeAction;
     sal_uLong       nEndChangeAction;
@@ -304,7 +304,7 @@ public:
 private:
     ScRange         aRange;
     ScMarkData      aMarkData;
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                     pUndoDoc;       // Block mark and deleted data
     sal_uLong       nStartChangeAction;
     sal_uLong       nEndChangeAction;
@@ -413,7 +413,7 @@ public:
 private:
     ScRange         aSource;
     ScMarkData      aMarkData;
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                     pUndoDoc;
     FillDir         eFillDir;
     FillCmd         eFillCmd;
@@ -444,7 +444,7 @@ public:
 private:
     ScCellMergeOption maOption;
     bool            mbMergeContents;        // Merge contents in Redo().
-    std::unique_ptr<ScDocument> mxUndoDoc;              // when data is merged
+    ScDocumentUniquePtr mxUndoDoc;              // when data is merged
     SdrUndoAction*  mpDrawUndo;
 
     void            DoChange( bool bUndo ) const;
@@ -467,7 +467,7 @@ public:
     virtual OUString GetComment() const override;
 
 private:
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                     pUndoDoc;       // deleted data
     ScMarkData      aMarkData;
     bool            bSize;
@@ -526,7 +526,7 @@ public:
 
 private:
     ScRange         aRange;
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                     pUndoDoc;       // Deleted data
     ScRefAddress    theFormulaCell;
     ScRefAddress    theFormulaEnd;
@@ -609,8 +609,8 @@ public:
     virtual OUString GetComment() const override;
 
 private:
-    std::unique_ptr<ScDocument> xUndoDoc;
-    std::unique_ptr<ScDocument> xRedoDoc;
+    ScDocumentUniquePtr xUndoDoc;
+    ScDocumentUniquePtr xRedoDoc;
 
     void            DoChange( ScDocument* pSrcDoc ) const;
 };
@@ -631,8 +631,8 @@ public:
 
 private:
     void DoChange(ScDocument* pDoc);
-    std::unique_ptr<ScDocument> mpUndoDoc;
-    std::unique_ptr<ScDocument> mpRedoDoc;
+    ScDocumentUniquePtr mpUndoDoc;
+    ScDocumentUniquePtr mpRedoDoc;
     ScRange maRange;
 };
 
@@ -652,8 +652,8 @@ public:
 
 private:
     void DoChange(const ScDocument* pDoc);
-    std::unique_ptr<ScDocument> mpUndoDoc;
-    std::unique_ptr<ScDocument> mpRedoDoc;
+    ScDocumentUniquePtr mpUndoDoc;
+    ScDocumentUniquePtr mpRedoDoc;
     SCTAB mnTab;
 };
 
@@ -674,7 +674,7 @@ public:
     virtual OUString GetComment() const override;
 
 private:
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                     pUndoDoc;
     ScRange         aRange;
     ScMarkData      aMarkData;
@@ -700,7 +700,7 @@ public:
 
 private:
     ScMarkData      aMarkData;
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                     pUndoDoc;
     OUString        aStyleName;
     ScRange         aRange;
@@ -722,8 +722,8 @@ public:
     virtual OUString GetComment() const override;
 
 private:
-    std::unique_ptr<ScDocument> xUndoDoc;
-    std::unique_ptr<ScDocument> xRedoDoc;
+    ScDocumentUniquePtr xUndoDoc;
+    ScDocumentUniquePtr xRedoDoc;
 };
 
 class ScUndoEnterMatrix: public ScBlockUndo
@@ -743,7 +743,7 @@ public:
     virtual OUString GetComment() const override;
 
 private:
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                     pUndoDoc;
     OUString        aFormula;
     sal_uLong       nStartChangeAction;
@@ -837,8 +837,8 @@ private:
     OUString        aNewOpt;
     OUString        aNewArea;
     ScRange         aNewRange;
-    std::unique_ptr<ScDocument> xUndoDoc;
-    std::unique_ptr<ScDocument> xRedoDoc;
+    ScDocumentUniquePtr xUndoDoc;
+    ScDocumentUniquePtr xRedoDoc;
     sal_uLong       nOldRefresh;
     sal_uLong       nNewRefresh;
     bool            bWithInsert;
@@ -862,7 +862,7 @@ public:
 
 private:
     ScMarkData      aMarkData;
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                     pUndoDoc;
     bool            bIsIncrement;
 };
@@ -883,7 +883,7 @@ public:
 
 private:
     ScMarkData      aMarkData;
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                     pUndoDoc;
     TransliterationFlags
                     nTransliterationType;
@@ -905,7 +905,7 @@ public:
 
 private:
     ScMarkData      aMarkData;
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                     pUndoDoc;
     std::unique_ptr<sal_uInt16[]>
                     pWhich;
@@ -927,7 +927,7 @@ public:
 
 private:
     SCTAB           nTab;
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                     pUndoDoc;
 };
 
@@ -956,7 +956,7 @@ private:
     void            SetCurTab();
 
     std::vector<ScCellMergeOption> maOptions;
-    std::unique_ptr<ScDocument>    pUndoDoc;
+    ScDocumentUniquePtr    pUndoDoc;
 };
 
 class ScUndoBorder: public ScBlockUndo
@@ -976,7 +976,7 @@ public:
     virtual OUString GetComment() const override;
 
 private:
-    std::unique_ptr<ScDocument> xUndoDoc;
+    ScDocumentUniquePtr xUndoDoc;
     std::unique_ptr<ScRangeList> xRanges;
     std::unique_ptr<SvxBoxItem> xOuter;
     std::unique_ptr<SvxBoxInfoItem> xInner;
diff --git a/sc/source/ui/inc/undodat.hxx b/sc/source/ui/inc/undodat.hxx
index 7f60385d32af..46542158bbbb 100644
--- a/sc/source/ui/inc/undodat.hxx
+++ b/sc/source/ui/inc/undodat.hxx
@@ -60,7 +60,7 @@ private:
     SCCOLROW        nStart;
     SCCOLROW        nEnd;
     SCTAB           nTab;
-    std::unique_ptr<ScDocument>
+    ScDocumentUniquePtr
                     pUndoDoc;
     bool            bColumns;
     sal_uInt16      nLevel;
@@ -113,7 +113,7 @@ private:
     SCCOLROW        nStart;
     SCCOLROW        nEnd;
     SCTAB           nTab;
-    std::unique_ptr<ScDocument> xUndoDoc;
+    ScDocumentUniquePtr xUndoDoc;
     std::unique_ptr<ScOutlineTable> xUndoTable;
     bool            bColumns;
     sal_uInt16      nLevel;
@@ -138,7 +138,7 @@ public:
 private:
     ScAddress       aBlockStart;
     ScAddress       aBlockEnd;
-    std::unique_ptr<ScDocument> xUndoDoc;
+    ScDocumentUniquePtr xUndoDoc;
     std::unique_ptr<ScOutlineTable> xUndoTable;
     bool            bShow;
 };
@@ -161,7 +161,7 @@ public:
 private:
     ScAddress       aBlockStart;
     ScAddress       aBlockEnd;
-    std::unique_ptr<ScDocument> xUndoDoc;
+    ScDocumentUniquePtr xUndoDoc;
     std::unique_ptr<ScOutlineTable> xUndoTable;
 };
 
@@ -183,7 +183,7 @@ public:
 private:
     ScAddress       aBlockStart;
     ScAddress       aBlockEnd;
-    std::unique_ptr<ScDocument> xUndoDoc;
+    ScDocumentUniquePtr xUndoDoc;
     std::unique_ptr<ScOutlineTable> xUndoTable;
 };
 
@@ -206,7 +206,7 @@ private:
     SCTAB           nTab;
     ScSubTotalParam aParam;                         // The original passed parameter
     SCROW           nNewEndRow;                     // Size of result
-    std::unique_ptr<ScDocument> xUndoDoc;
+    ScDocumentUniquePtr xUndoDoc;
     std::unique_ptr<ScOutlineTable> xUndoTable;
     std::unique_ptr<ScRangeName> xUndoRange;
     std::unique_ptr<ScDBCollection> xUndoDB;
@@ -232,7 +232,7 @@ private:
     SdrUndoAction*  pDrawUndo;
     SCTAB           nTab;
     ScQueryParam    aQueryParam;
-    std::unique_ptr<ScDocument> xUndoDoc;
+    ScDocumentUniquePtr xUndoDoc;
     std::unique_ptr<ScDBCollection> xUndoDB;                // due to source and target range
     ScRange         aOldDest;
     ScRange         aAdvSource;
@@ -302,8 +302,8 @@ private:
     ScImportParam   aImportParam;
     SCCOL           nEndCol;
     SCROW           nEndRow;
-    std::unique_ptr<ScDocument> xUndoDoc;
-    std::unique_ptr<ScDocument> xRedoDoc;
+    ScDocumentUniquePtr xUndoDoc;
+    ScDocumentUniquePtr xRedoDoc;
     std::unique_ptr<ScDBData> xUndoDBData;
     std::unique_ptr<ScDBData> xRedoDBData;
     SCCOL           nFormulaCols;
@@ -332,7 +332,7 @@ private:
     ScAddress       aBlockEnd;
     SCROW           nNewEndRow;
     ScAddress       aCursorPos;
-    std::unique_ptr<ScDocument> xUndoDoc;
+    ScDocumentUniquePtr xUndoDoc;
     std::unique_ptr<ScOutlineTable> xUndoTable;
     std::unique_ptr<ScRangeName> xUndoRange;
     std::unique_ptr<ScDBCollection> xUndoDB;
@@ -357,8 +357,8 @@ public:
     virtual OUString GetComment() const override;
 
 private:
-    std::unique_ptr<ScDocument> xOldUndoDoc;
-    std::unique_ptr<ScDocument> xNewUndoDoc;
+    ScDocumentUniquePtr xOldUndoDoc;
+    ScDocumentUniquePtr xNewUndoDoc;
     std::unique_ptr<ScDPObject> xOldDPObject;
     std::unique_ptr<ScDPObject> xNewDPObject;
     bool            bAllowMove;
@@ -382,7 +382,7 @@ public:
 
 private:
     ScArea              aDestArea;
-    std::unique_ptr<ScDocument> xUndoDoc;
+    ScDocumentUniquePtr xUndoDoc;
     ScConsolidateParam  aParam;
     bool                bInsRef;
     SCSIZE              nInsertCount;
@@ -440,8 +440,8 @@ public:
 
 private:
     std::unique_ptr<ScMarkData> mxMarkData;
-    std::unique_ptr<ScDocument> xUndoDoc;
-    std::unique_ptr<ScDocument> xRedoDoc;
+    ScDocumentUniquePtr xUndoDoc;
+    ScDocumentUniquePtr xRedoDoc;
     std::unique_ptr<ScRefUndoData> xRefUndoData;
     std::unique_ptr<ScRefUndoData> xRefRedoData;
     sal_uLong       nStartChangeAction;
diff --git a/sc/source/ui/inc/undotab.hxx b/sc/source/ui/inc/undotab.hxx
index ee2ade721dda..901c406730a9 100644
--- a/sc/source/ui/inc/undotab.hxx
+++ b/sc/source/ui/inc/undotab.hxx
@@ -269,7 +269,7 @@ public:
 private:
     SCTAB       nTab;
     SCTAB       nCount;
-    std::unique_ptr<ScDocument> xRedoDoc;
+    ScDocumentUniquePtr xRedoDoc;
     SdrUndoAction*  pDrawUndo;
 
     void DoChange() const;
diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx
index 3b7de1a31273..b033116e47e0 100644
--- a/sc/source/ui/undo/undoblk.cxx
+++ b/sc/source/ui/undo/undoblk.cxx
@@ -1394,7 +1394,7 @@ void ScUndoDragDrop::Redo()
     BeginRedo();
 
     ScDocument& rDoc = pDocShell->GetDocument();
-    std::unique_ptr<ScDocument> pClipDoc(new ScDocument( SCDOCMODE_CLIP ));
+    ScDocumentUniquePtr pClipDoc(new ScDocument( SCDOCMODE_CLIP ));
 
     EnableDrawAdjust( &rDoc, false );                //! include in ScBlockUndo?
 
diff --git a/sc/source/ui/undo/undoblk3.cxx b/sc/source/ui/undo/undoblk3.cxx
index 604a662009c2..7828532b92c9 100644
--- a/sc/source/ui/undo/undoblk3.cxx
+++ b/sc/source/ui/undo/undoblk3.cxx
@@ -64,7 +64,7 @@
 ScUndoDeleteContents::ScUndoDeleteContents(
                 ScDocShell* pNewDocShell,
                 const ScMarkData& rMark, const ScRange& rRange,
-                std::unique_ptr<ScDocument>&& pNewUndoDoc, bool bNewMulti,
+                ScDocumentUniquePtr&& pNewUndoDoc, bool bNewMulti,
                 InsertDeleteFlags nNewFlags, bool bObjects )
     :   ScSimpleUndo( pNewDocShell ),
         aRange      ( rRange ),
diff --git a/sc/source/ui/unoobj/funcuno.cxx b/sc/source/ui/unoobj/funcuno.cxx
index 8fb5c3d57b8e..c91134f3a6c3 100644
--- a/sc/source/ui/unoobj/funcuno.cxx
+++ b/sc/source/ui/unoobj/funcuno.cxx
@@ -141,7 +141,7 @@ static bool lcl_CopyData( ScDocument* pSrcDoc, const ScRange& rSrcRange,
                 rSrcRange.aEnd.Row() - rSrcRange.aStart.Row() + rDestPos.Row(),
                 nDestTab ) );
 
-    std::unique_ptr<ScDocument> pClipDoc(new ScDocument( SCDOCMODE_CLIP ));
+    ScDocumentUniquePtr pClipDoc(new ScDocument( SCDOCMODE_CLIP ));
     ScMarkData aSourceMark;
     aSourceMark.SelectOneTable( nSrcTab );      // for CopyToClip
     aSourceMark.SetMarkArea( rSrcRange );
diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx
index 6cc144191db4..e2016d2acce9 100644
--- a/sc/source/ui/view/cellsh2.cxx
+++ b/sc/source/ui/view/cellsh2.cxx
@@ -783,9 +783,9 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
         break;
         case SID_DATA_PROVIDER:
         {
-            std::shared_ptr<ScDocument> pDoc = std::make_shared<ScDocument>();
-            pDoc->InsertTab(0, "test");
-            ScopedVclPtrInstance< ScDataProviderDlg > aDialog( pTabViewShell->GetDialogParent(), pDoc);
+            std::shared_ptr<ScDocument> xDoc(new ScDocument, o3tl::default_delete<ScDocument>());
+            xDoc->InsertTab(0, "test");
+            ScopedVclPtrInstance< ScDataProviderDlg > aDialog( pTabViewShell->GetDialogParent(), xDoc);
             if (aDialog->Execute() == RET_OK)
             {
                 // handle the import here
diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx
index 0b65d959edc4..2cc79ac57080 100644
--- a/sc/source/ui/view/dbfunc3.cxx
+++ b/sc/source/ui/view/dbfunc3.cxx
@@ -1998,7 +1998,7 @@ void ScDBFunc::ShowDataPilotSourceData( ScDPObject& rDPObj, const Sequence<sheet
 
     SCTAB nNewTab = GetViewData().GetTabNo();
 
-    std::unique_ptr<ScDocument> pInsDoc(new ScDocument(SCDOCMODE_CLIP));
+    ScDocumentUniquePtr pInsDoc(new ScDocument(SCDOCMODE_CLIP));
     pInsDoc->ResetClip( pDoc, nNewTab );
     for (SCROW nRow = 0; nRow < nRowSize; ++nRow)
     {
diff --git a/sc/source/ui/view/preview.cxx b/sc/source/ui/view/preview.cxx
index 077877beee44..c94993a43bbc 100644
--- a/sc/source/ui/view/preview.cxx
+++ b/sc/source/ui/view/preview.cxx
@@ -32,7 +32,7 @@
 #include <tools/multisel.hxx>
 #include <vcl/waitobj.hxx>
 #include <vcl/settings.hxx>
-#include <o3tl/make_unique.hxx>
+#include <o3tl/deleter.hxx>
 
 #include "preview.hxx"
 #include "prevwsh.hxx"
@@ -389,11 +389,11 @@ void ScPreview::DoPrint( ScPreviewLocationData* pFillLocation )
     {
         ScPrintOptions aOptions = pScMod->GetPrintOptions();
 
-        std::unique_ptr<ScPrintFunc> pPrintFunc;
+        std::unique_ptr<ScPrintFunc, o3tl::default_delete<ScPrintFunc>> pPrintFunc;
         if (bStateValid)
-            pPrintFunc = o3tl::make_unique<ScPrintFunc>( this, pDocShell, aState, &aOptions );
+            pPrintFunc.reset(new ScPrintFunc(this, pDocShell, aState, &aOptions));
         else
-            pPrintFunc = o3tl::make_unique<ScPrintFunc>( this, pDocShell, nTab, nFirstAttr[nTab], nTotalPages, nullptr, &aOptions );
+            pPrintFunc.reset(new ScPrintFunc(this, pDocShell, nTab, nFirstAttr[nTab], nTotalPages, nullptr, &aOptions));
 
         pPrintFunc->SetOffset(aOffset);
         pPrintFunc->SetManualZoom(nZoom);
diff --git a/sc/source/ui/view/printfun.cxx b/sc/source/ui/view/printfun.cxx
index 3442c54618dc..b8d5ecfd30f5 100644
--- a/sc/source/ui/view/printfun.cxx
+++ b/sc/source/ui/view/printfun.cxx
@@ -1339,7 +1339,7 @@ void ScPrintFunc::DrawBorder( long nScrX, long nScrY, long nScrW, long nScrH,
 
     if (pBorderData)
     {
-        std::unique_ptr<ScDocument> pBorderDoc(new ScDocument( SCDOCMODE_UNDO ));
+        ScDocumentUniquePtr pBorderDoc(new ScDocument( SCDOCMODE_UNDO ));
         pBorderDoc->InitUndo( pDoc, 0,0, true,true );
         if (pBorderData)
             pBorderDoc->ApplyAttr( 0,0,0, *pBorderData );
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index 5f15c438b891..2cf0b789062f 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -1498,8 +1498,7 @@ void ScTabViewShell::Construct( TriState nForceDesignMode )
     // use the InputHandler of the App).
     // As an intermediate solution each View gets its own InputHandler,
     // which only yields problems if two Views are in one task window.
-
-    mpInputHandler = o3tl::make_unique<ScInputHandler>();
+    mpInputHandler.reset(new ScInputHandler);
 
     // old version:
     //  if ( !GetViewFrame()->ISA(SfxTopViewFrame) )        // OLE or Plug-In
diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx
index 0e5dc1edbcf0..55fe8f091d05 100644
--- a/sc/source/ui/view/viewfun2.cxx
+++ b/sc/source/ui/view/viewfun2.cxx
@@ -798,7 +798,7 @@ void ScViewFunc::EnterBlock( const OUString& rString, const EditTextObject* pDat
 
     ScAddress aPos( nCol, nRow, nTab );
 
-    std::unique_ptr<ScDocument> pInsDoc(new ScDocument( SCDOCMODE_CLIP ));
+    ScDocumentUniquePtr pInsDoc(new ScDocument( SCDOCMODE_CLIP ));
     pInsDoc->ResetClip( pDoc, nTab );
 
     if (aNewStr[0] == '=')                      // Formula ?
@@ -1746,7 +1746,7 @@ bool ScViewFunc::SearchAndReplace( const SvxSearchItem* pSearchItem,
 
     //!     account for bAttrib during Undo !!!
 
-    std::unique_ptr<ScDocument> pUndoDoc;
+    ScDocumentUniquePtr pUndoDoc;
     std::unique_ptr<ScMarkData> pUndoMark;
     OUString aUndoStr;
     if (bAddUndo)
diff --git a/sc/source/ui/view/viewfun3.cxx b/sc/source/ui/view/viewfun3.cxx
index 4294c55c1a07..1df722ed79f8 100644
--- a/sc/source/ui/view/viewfun3.cxx
+++ b/sc/source/ui/view/viewfun3.cxx
@@ -309,7 +309,7 @@ bool ScViewFunc::CopyToClip( ScDocument* pClipDoc, const ScRangeList& rRanges, b
                 // TODO: What's this for?
                 break;
 
-            ::std::unique_ptr<ScDocument> pDocClip(new ScDocument(SCDOCMODE_CLIP));
+            ScDocumentUniquePtr pDocClip(new ScDocument(SCDOCMODE_CLIP));
 
             // Check for geometrical feasibility of the ranges.
             bool bValidRanges = true;
@@ -926,7 +926,7 @@ bool ScViewFunc::PasteFromClip( InsertDeleteFlags nFlags, ScDocument* pClipDoc,
 
     ScDocShellRef aTransShellRef;   // for objects in xTransClip - must remain valid as long as xTransClip
     ScDocument* pOrigClipDoc = nullptr;
-    ::std::unique_ptr< ScDocument > xTransClip;
+    ScDocumentUniquePtr xTransClip;
     if ( bTranspose )
     {
         SCCOL nX;
@@ -1279,7 +1279,7 @@ bool ScViewFunc::PasteFromClip( InsertDeleteFlags nFlags, ScDocument* pClipDoc,
         //  copy from clipboard
         //  save original data in case of calculation
 
-    std::unique_ptr<ScDocument> pMixDoc;
+    ScDocumentUniquePtr pMixDoc;
     if (nFunction != ScPasteFunc::NONE)
     {
         bSkipEmpty = false;
@@ -1485,7 +1485,7 @@ bool ScViewFunc::PasteMultiRangesFromClip(
             return false;
         }
 
-        ::std::unique_ptr<ScDocument> pTransClip(new ScDocument(SCDOCMODE_CLIP));
+        ScDocumentUniquePtr pTransClip(new ScDocument(SCDOCMODE_CLIP));
         pClipDoc->TransposeClip(pTransClip.get(), nFlags, bAsLink);
         pClipDoc = pTransClip.release();
         SCCOL nTempColSize = nColSize;
@@ -1542,7 +1542,7 @@ bool ScViewFunc::PasteMultiRangesFromClip(
     }
 
     bool bRowInfo = ( aMarkedRange.aStart.Col()==0 && aMarkedRange.aEnd.Col()==MAXCOL );
-    ::std::unique_ptr<ScDocument> pUndoDoc;
+    ScDocumentUniquePtr pUndoDoc;
     if (pDoc->IsUndoEnabled())
     {
         pUndoDoc.reset(new ScDocument(SCDOCMODE_UNDO));
@@ -1550,7 +1550,7 @@ bool ScViewFunc::PasteMultiRangesFromClip(
         pDoc->CopyToDocument(aMarkedRange, nUndoFlags, false, *pUndoDoc, &aMark);
     }
 
-    ::std::unique_ptr<ScDocument> pMixDoc;
+    ScDocumentUniquePtr pMixDoc;
     if ( bSkipEmpty || nFunction != ScPasteFunc::NONE)
     {
         if ( nFlags & InsertDeleteFlags::CONTENTS )
@@ -1693,7 +1693,7 @@ bool ScViewFunc::PasteFromClipToMultiRanges(
             return false;
     }
 
-    std::unique_ptr<ScDocument> pUndoDoc;
+    ScDocumentUniquePtr pUndoDoc;
     if (pDoc->IsUndoEnabled())
     {
         pUndoDoc.reset(new ScDocument(SCDOCMODE_UNDO));
@@ -1705,7 +1705,7 @@ bool ScViewFunc::PasteFromClipToMultiRanges(
         }
     }
 
-    std::unique_ptr<ScDocument> pMixDoc;
+    ScDocumentUniquePtr pMixDoc;
     if (bSkipEmpty || nFunction != ScPasteFunc::NONE)
     {
         if (nFlags & InsertDeleteFlags::CONTENTS)
@@ -1923,7 +1923,7 @@ bool ScViewFunc::LinkBlock( const ScRange& rSource, const ScAddress& rDestPos )
     //  run with paste
 
     ScDocument* pDoc = GetViewData().GetDocument();
-    std::unique_ptr<ScDocument> pClipDoc(new ScDocument( SCDOCMODE_CLIP ));
+    ScDocumentUniquePtr pClipDoc(new ScDocument( SCDOCMODE_CLIP ));
     pDoc->CopyTabToClip( rSource.aStart.Col(), rSource.aStart.Row(),
                             rSource.aEnd.Col(), rSource.aEnd.Row(),
                          rSource.aStart.Tab(), pClipDoc.get() );
diff --git a/sc/source/ui/view/viewfun5.cxx b/sc/source/ui/view/viewfun5.cxx
index 411a7979ee78..d3baacf6ba34 100644
--- a/sc/source/ui/view/viewfun5.cxx
+++ b/sc/source/ui/view/viewfun5.cxx
@@ -140,7 +140,7 @@ bool ScViewFunc::PasteDataFormat( SotClipboardFormatId nFormatId,
 
                     ScMarkData aSrcMark;
                     aSrcMark.SelectOneTable( nSrcTab );         // for CopyToClip
-                    std::unique_ptr<ScDocument> pClipDoc(new ScDocument( SCDOCMODE_CLIP ));
+                    ScDocumentUniquePtr pClipDoc(new ScDocument( SCDOCMODE_CLIP ));
 
                     SCCOL nFirstCol, nLastCol;
                     SCROW nFirstRow, nLastRow;
diff --git a/sd/source/ui/framework/module/ToolBarModule.hxx b/sd/source/ui/framework/module/ToolBarModule.hxx
index 933f064bd65e..d0e1ebed80b6 100644
--- a/sd/source/ui/framework/module/ToolBarModule.hxx
+++ b/sd/source/ui/framework/module/ToolBarModule.hxx
@@ -27,6 +27,7 @@
 #include <com/sun/star/frame/XController.hpp>
 #include <cppuhelper/basemutex.hxx>
 #include <cppuhelper/compbase.hxx>
+#include <o3tl/deleter.hxx>
 #include <memory>
 
 namespace sd {
@@ -71,7 +72,7 @@ private:
     css::uno::Reference<
         css::drawing::framework::XConfigurationController> mxConfigurationController;
     ViewShellBase* mpBase;
-    std::unique_ptr<ToolBarManager::UpdateLock> mpToolBarManagerLock;
+    std::unique_ptr<ToolBarManager::UpdateLock, o3tl::default_delete<ToolBarManager::UpdateLock>> mpToolBarManagerLock;
     bool mbMainViewSwitchUpdatePending;
 
     void HandleUpdateStart();
diff --git a/sd/source/ui/func/fuolbull.cxx b/sd/source/ui/func/fuolbull.cxx
index 03deeed1b511..4461dfade3bb 100644
--- a/sd/source/ui/func/fuolbull.cxx
+++ b/sd/source/ui/func/fuolbull.cxx
@@ -97,7 +97,7 @@ void FuOutlineBullet::DoExecute( SfxRequest& rReq )
 
                     OutlinerView* pOLV = mpView->GetTextEditOutlinerView();
 
-                    std::unique_ptr< OutlineViewModelChangeGuard > aGuard;
+                    std::unique_ptr<OutlineViewModelChangeGuard, o3tl::default_delete<OutlineViewModelChangeGuard>> aGuard;
 
                     if (OutlineView* pView = dynamic_cast<OutlineView*>(mpView))
                     {
@@ -232,7 +232,7 @@ void FuOutlineBullet::SetCurrentBulletsNumbering(SfxRequest& rReq)
     }
 
     OutlinerView* pOLV = mpView->GetTextEditOutlinerView();
-    std::unique_ptr< OutlineViewModelChangeGuard > aGuard;
+    std::unique_ptr<OutlineViewModelChangeGuard, o3tl::default_delete<OutlineViewModelChangeGuard>> aGuard;
     if (OutlineView* pView = dynamic_cast<OutlineView*>(mpView))
     {
         pOLV = pView->GetViewByWindow(mpViewShell->GetActiveWindow());
diff --git a/sd/source/ui/func/fuoltext.cxx b/sd/source/ui/func/fuoltext.cxx
index b342d506f4ce..14cb95413f78 100644
--- a/sd/source/ui/func/fuoltext.cxx
+++ b/sd/source/ui/func/fuoltext.cxx
@@ -211,7 +211,7 @@ bool FuOutlineText::KeyInput(const KeyEvent& rKEvt)
     {
         mpWindow->GrabFocus();
 
-        std::unique_ptr< OutlineViewModelChangeGuard > aGuard;
+        std::unique_ptr<OutlineViewModelChangeGuard, o3tl::default_delete<OutlineViewModelChangeGuard>> aGuard;
         if( (nKeyGroup != KEYGROUP_CURSOR) && (nKeyGroup != KEYGROUP_FKEYS) )
             aGuard.reset( new OutlineViewModelChangeGuard( *pOutlineView ) );
 
diff --git a/sd/source/ui/inc/OutlineView.hxx b/sd/source/ui/inc/OutlineView.hxx
index 945fcbae93c8..60dc8569e17b 100644
--- a/sd/source/ui/inc/OutlineView.hxx
+++ b/sd/source/ui/inc/OutlineView.hxx
@@ -23,6 +23,7 @@
 #include <memory>
 #include <vcl/image.hxx>
 #include <editeng/lrspitem.hxx>
+#include <o3tl/deleter.hxx>
 #include "View.hxx"
 
 class SdPage;
@@ -204,7 +205,7 @@ private:
     DECL_LINK(EventMultiplexerListener, sd::tools::EventMultiplexerEvent&, void);
 
     /** holds a model guard during drag and drop between BeginMovingHdl and EndMovingHdl */
-    std::unique_ptr< OutlineViewModelChangeGuard > maDragAndDropModelGuard;
+    std::unique_ptr<OutlineViewModelChangeGuard, o3tl::default_delete<OutlineViewModelChangeGuard>> maDragAndDropModelGuard;
 
     vcl::Font maPageNumberFont;
     vcl::Font maBulletFont;
diff --git a/sd/source/ui/inc/ViewShellImplementation.hxx b/sd/source/ui/inc/ViewShellImplementation.hxx
index 2e2d797df415..65222ff5fe5f 100644
--- a/sd/source/ui/inc/ViewShellImplementation.hxx
+++ b/sd/source/ui/inc/ViewShellImplementation.hxx
@@ -23,7 +23,7 @@
 #include "ViewShell.hxx"
 #include "ViewShellManager.hxx"
 #include "ToolBarManager.hxx"
-
+#include <o3tl/deleter.hxx>
 #include <memory>
 
 class SvxIMapDlg;
@@ -73,7 +73,7 @@ public:
         void Release (bool bForce = false);
         DECL_LINK(TimeoutCallback, Timer *, void);
     private:
-        ::std::unique_ptr<ToolBarManager::UpdateLock> mpLock;
+        ::std::unique_ptr<ToolBarManager::UpdateLock, o3tl::default_delete<ToolBarManager::UpdateLock>> mpLock;
         /** The timer is used both as a safe guard to unlock the update lock
             when Release() is not called explicitly.  It is also used to
             defer the release of the lock to a time when the UI is not
diff --git a/sd/source/ui/inc/ViewShellManager.hxx b/sd/source/ui/inc/ViewShellManager.hxx
index 932d835a1eab..c9e89ee86aa9 100644
--- a/sd/source/ui/inc/ViewShellManager.hxx
+++ b/sd/source/ui/inc/ViewShellManager.hxx
@@ -21,6 +21,7 @@
 #define INCLUDED_SD_SOURCE_UI_INC_VIEWSHELLMANAGER_HXX
 
 #include "ShellFactory.hxx"
+#include <o3tl/deleter.hxx>
 #include <memory>
 
 class FmFormShell;
@@ -182,7 +183,7 @@ public:
 
 private:
     class Implementation;
-    ::std::unique_ptr<ViewShellManager::Implementation> mpImpl;
+    std::unique_ptr<ViewShellManager::Implementation, o3tl::default_delete<ViewShellManager::Implementation>> mpImpl;
     bool mbValid;
 
     void LockUpdate();
diff --git a/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx b/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
index 5eea4cd46dde..0a3fbfe812e7 100644
--- a/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
@@ -58,6 +58,7 @@
 #include "app.hrc"
 #include "sdresid.hxx"
 #include "strings.hrc"
+#include <o3tl/deleter.hxx>
 #include <sfx2/viewfrm.hxx>
 #include <sfx2/dispatch.hxx>
 #include <svx/svdpagv.hxx>
@@ -303,7 +304,7 @@ protected:
     virtual bool ProcessDragEvent (SelectionFunction::EventDescriptor& rDescriptor) override;
 
 private:
-    std::unique_ptr<DragAndDropContext> mpDragAndDropContext;
+    std::unique_ptr<DragAndDropContext, o3tl::default_delete<DragAndDropContext>> mpDragAndDropContext;
 };
 
 //===== SelectionFunction =====================================================
diff --git a/sd/source/ui/slidesorter/inc/view/SlideSorterView.hxx b/sd/source/ui/slidesorter/inc/view/SlideSorterView.hxx
index 4e852081de01..57bf311e23ce 100644
--- a/sd/source/ui/slidesorter/inc/view/SlideSorterView.hxx
+++ b/sd/source/ui/slidesorter/inc/view/SlideSorterView.hxx
@@ -29,6 +29,7 @@
 #include "View.hxx"
 #include <sfx2/viewfrm.hxx>
 #include "pres.hxx"
+#include <o3tl/deleter.hxx>
 #include <tools/gen.hxx>
 #include <svx/svdmodel.hxx>
 #include <vcl/region.hxx>
@@ -224,7 +225,7 @@ private:
     std::shared_ptr<PageObjectPainter> mpPageObjectPainter;
     vcl::Region maRedrawRegion;
     SharedILayerPainter mpBackgroundPainter;
-    std::unique_ptr<ToolTip> mpToolTip;
+    std::unique_ptr<ToolTip, o3tl::default_delete<ToolTip>> mpToolTip;
     bool mbIsRearrangePending;
     ::std::vector<Link<LinkParamNone*,void>> maVisibilityChangeListeners;
 
diff --git a/sd/source/ui/view/ToolBarManager.cxx b/sd/source/ui/view/ToolBarManager.cxx
index b2ede96f664f..8aecd998617e 100644
--- a/sd/source/ui/view/ToolBarManager.cxx
+++ b/sd/source/ui/view/ToolBarManager.cxx
@@ -28,6 +28,7 @@
 #include <com/sun/star/ui/UIElementType.hpp>
 
 #include <osl/mutex.hxx>
+#include <o3tl/deleter.hxx>
 #include <o3tl/enumrange.hxx>
 #include <rtl/ref.hxx>
 #include <sfx2/app.hxx>
@@ -316,7 +317,7 @@ private:
     */
     ::std::unique_ptr<LayouterLock> mpSynchronousLayouterLock;
     ::std::unique_ptr<LayouterLock> mpAsynchronousLayouterLock;
-    ::std::unique_ptr<ViewShellManager::UpdateLock> mpViewShellManagerLock;
+    ::std::unique_ptr<ViewShellManager::UpdateLock, o3tl::default_delete<ViewShellManager::UpdateLock>> mpViewShellManagerLock;
     ImplSVEvent * mnPendingUpdateCall;
     ImplSVEvent * mnPendingSetValidCall;
     ToolBarRules maToolBarRules;
diff --git a/sd/source/ui/view/drtxtob1.cxx b/sd/source/ui/view/drtxtob1.cxx
index f453acd062ed..e113cf9b6409 100644
--- a/sd/source/ui/view/drtxtob1.cxx
+++ b/sd/source/ui/view/drtxtob1.cxx
@@ -87,7 +87,7 @@ void TextObjectBar::Execute( SfxRequest &rReq )
     sal_uInt16 nSlot = rReq.GetSlot();
     OutlinerView* pOLV = mpView->GetTextEditOutlinerView();
 
-    std::unique_ptr< OutlineViewModelChangeGuard > aGuard;
+    std::unique_ptr<OutlineViewModelChangeGuard, o3tl::default_delete<OutlineViewModelChangeGuard>> aGuard;
 
     if( dynamic_cast< const OutlineView *>( mpView ) !=  nullptr)
     {
diff --git a/sd/source/ui/view/outlnvs2.cxx b/sd/source/ui/view/outlnvs2.cxx
index 1509e5822201..97d1f7319558 100644
--- a/sd/source/ui/view/outlnvs2.cxx
+++ b/sd/source/ui/view/outlnvs2.cxx
@@ -351,7 +351,7 @@ void OutlineViewShell::FuTemporary(SfxRequest &rReq)
 void OutlineViewShell::FuTemporaryModify(SfxRequest &rReq)
 {
     sal_uInt16 nSId = rReq.GetSlot();
-    std::unique_ptr< OutlineViewModelChangeGuard > aGuard;
+    std::unique_ptr<OutlineViewModelChangeGuard, o3tl::default_delete<OutlineViewModelChangeGuard>> aGuard;
     if (nSId != SID_OUTLINE_BULLET && nSId != FN_SVX_SET_BULLET && nSId != FN_SVX_SET_NUMBER)
     {
         aGuard.reset( new OutlineViewModelChangeGuard(*pOlView) );
diff --git a/sd/source/ui/view/outlnvsh.cxx b/sd/source/ui/view/outlnvsh.cxx
index fba7fe04696b..ea8d4fa7c75c 100644
--- a/sd/source/ui/view/outlnvsh.cxx
+++ b/sd/source/ui/view/outlnvsh.cxx
@@ -416,7 +416,7 @@ void OutlineViewShell::FuSupport(SfxRequest &rReq)
     bool bPreviewState = false;
     sal_uLong nSlot = rReq.GetSlot();
 
-    std::unique_ptr< OutlineViewModelChangeGuard > aGuard;
+    std::unique_ptr<OutlineViewModelChangeGuard, o3tl::default_delete<OutlineViewModelChangeGuard>> aGuard;
     if( pOlView && (
         (nSlot == SID_TRANSLITERATE_SENTENCE_CASE) ||
         (nSlot == SID_TRANSLITERATE_TITLE_CASE) ||
diff --git a/sw/inc/list.hxx b/sw/inc/list.hxx
index d3ef07c8ea4c..a5698c3cb1e5 100644
--- a/sw/inc/list.hxx
+++ b/sw/inc/list.hxx
@@ -20,6 +20,7 @@
 #ifndef INCLUDED_SW_INC_LIST_HXX
 #define INCLUDED_SW_INC_LIST_HXX
 
+#include <o3tl/deleter.hxx>
 #include <rtl/ustring.hxx>
 #include <memory>
 
@@ -58,7 +59,7 @@ class SwList
         SwList( const SwList& ) = delete;
         SwList& operator=( const SwList& ) = delete;
 
-        std::unique_ptr<SwListImpl> mpListImpl;
+        std::unique_ptr<SwListImpl, o3tl::default_delete<SwListImpl>> mpListImpl;
 };
 #endif // INCLUDED_SW_INC_LIST_HXX
 
diff --git a/sw/source/uibase/app/applab.cxx b/sw/source/uibase/app/applab.cxx
index 030d8ffda666..4a0bd4568151 100644
--- a/sw/source/uibase/app/applab.cxx
+++ b/sw/source/uibase/app/applab.cxx
@@ -24,6 +24,7 @@
 #include <hintids.hxx>
 
 #include <comphelper/string.hxx>
+#include <o3tl/deleter.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/wrkwin.hxx>
 #include <vcl/msgbox.hxx>
@@ -156,7 +157,7 @@ void SwModule::InsertLab(SfxRequest& rReq, bool bLabel)
 
 #if HAVE_FEATURE_DBCONNECTIVITY
     // Create DB-Manager
-    std::unique_ptr<SwDBManager> pDBManager(new SwDBManager(nullptr));
+    std::unique_ptr<SwDBManager, o3tl::default_delete<SwDBManager>> pDBManager(new SwDBManager(nullptr));
 #endif
 
     // Read SwLabItem from Config
diff --git a/sw/source/uibase/dochdl/swdtflvr.cxx b/sw/source/uibase/dochdl/swdtflvr.cxx
index 3f0ebad4116a..1f206ea72bd4 100644
--- a/sw/source/uibase/dochdl/swdtflvr.cxx
+++ b/sw/source/uibase/dochdl/swdtflvr.cxx
@@ -32,6 +32,7 @@
 #include <comphelper/servicehelper.hxx>
 #include <comphelper/storagehelper.hxx>
 #include <comphelper/string.hxx>
+#include <o3tl/deleter.hxx>
 #include <unotools/ucbstreamhelper.hxx>
 #include <sot/filelist.hxx>
 #include <svx/svxdlg.hxx>
@@ -1187,7 +1188,7 @@ bool SwTransferable::PasteData( TransferableDataHelper& rData,
                             bool bPasteSelection, RndStdIds nAnchorType )
 {
     SwWait aWait( *rSh.GetView().GetDocShell(), false );
-    std::unique_ptr<SwTrnsfrActionAndUndo> pAction;
+    std::unique_ptr<SwTrnsfrActionAndUndo, o3tl::default_delete<SwTrnsfrActionAndUndo>> pAction;
     SwModule* pMod = SW_MOD();
 
     bool bRet = false;


More information about the Libreoffice-commits mailing list