[Libreoffice-commits] core.git: fpicker/source include/o3tl sc/source sw/qa vcl/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Sat Jun 27 19:47:48 UTC 2020


 fpicker/source/office/OfficeFilePicker.cxx   |    3 ++-
 fpicker/source/office/OfficeFolderPicker.cxx |    3 ++-
 include/o3tl/make_shared.hxx                 |   15 +++++++++++++++
 sc/source/ui/view/cellsh2.cxx                |    3 ++-
 sc/source/ui/view/tabvwshc.cxx               |    3 ++-
 sw/qa/extras/uiwriter/uiwriter.cxx           |    4 ++--
 vcl/source/gdi/impgraph.cxx                  |    4 ++--
 7 files changed, 27 insertions(+), 8 deletions(-)

New commits:
commit d1069a583dc1bcf4f1cf9b4bed12cb48bc757951
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Sat Jun 27 16:47:49 2020 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Sat Jun 27 21:47:11 2020 +0200

    cid#1401342 Uncaught exception
    
    Change-Id: Ia22ed8541f1148355d71cd5b90ad13e64c1b50c2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97289
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/fpicker/source/office/OfficeFilePicker.cxx b/fpicker/source/office/OfficeFilePicker.cxx
index d849326119f4..2c813d64c013 100644
--- a/fpicker/source/office/OfficeFilePicker.cxx
+++ b/fpicker/source/office/OfficeFilePicker.cxx
@@ -35,6 +35,7 @@
 #include <com/sun/star/beans/NamedValue.hpp>
 #include <unotools/pathoptions.hxx>
 #include <cppuhelper/supportsservice.hxx>
+#include <o3tl/make_shared.hxx>
 #include <vcl/svapp.hxx>
 
 using namespace     ::com::sun::star::container;
@@ -435,7 +436,7 @@ std::shared_ptr<SvtFileDialog_Base> SvtFilePicker::implCreateDialog( weld::Windo
 {
     PickerFlags nBits = getPickerFlags();
 
-    auto dialog = std::make_shared<SvtFileDialog>(pParent, nBits);
+    auto dialog = o3tl::make_shared<SvtFileDialog>(pParent, nBits);
 
     // Set StandardDir if present
     if ( !m_aStandardDir.isEmpty())
diff --git a/fpicker/source/office/OfficeFolderPicker.cxx b/fpicker/source/office/OfficeFolderPicker.cxx
index 424bf708cdb0..8413020df96f 100644
--- a/fpicker/source/office/OfficeFolderPicker.cxx
+++ b/fpicker/source/office/OfficeFolderPicker.cxx
@@ -24,6 +24,7 @@
 #include <vector>
 #include <tools/urlobj.hxx>
 #include <cppuhelper/supportsservice.hxx>
+#include <o3tl/make_shared.hxx>
 #include <unotools/pathoptions.hxx>
 
 using namespace     ::com::sun::star::container;
@@ -70,7 +71,7 @@ void SAL_CALL SvtFolderPicker::startExecuteModal( const Reference< css::ui::dial
 
 std::shared_ptr<SvtFileDialog_Base> SvtFolderPicker::implCreateDialog( weld::Window* pParent )
 {
-    return std::make_shared<SvtFileDialog>(pParent, PickerFlags::PathDialog);
+    return o3tl::make_shared<SvtFileDialog>(pParent, PickerFlags::PathDialog);
 }
 
 sal_Int16 SvtFolderPicker::implExecutePicker( )
diff --git a/include/o3tl/make_shared.hxx b/include/o3tl/make_shared.hxx
index d42783c301fa..9d7998fd5a36 100644
--- a/include/o3tl/make_shared.hxx
+++ b/include/o3tl/make_shared.hxx
@@ -10,6 +10,7 @@
 #ifndef INCLUDED_O3TL_MAKE_SHARED_HXX
 #define INCLUDED_O3TL_MAKE_SHARED_HXX
 
+#include <o3tl/deleter.hxx>
 #include <memory>
 #include <type_traits>
 
@@ -26,6 +27,20 @@ std::shared_ptr<T> make_shared_array(size_t const size)
     return std::shared_ptr<T>(new T[size], std::default_delete<T[]>());
 }
 
+/** To markup std::shared_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<class T, class... Args>
+std::shared_ptr<T> make_shared(Args&&... args)
+{
+#if defined(__COVERITY__)
+    return std::shared_ptr<T>(new T(std::forward<Args>(args)...), o3tl::default_delete<T>());
+#else
+    return std::make_shared<T>(std::forward<Args>(args)...);
+#endif
+}
+
 } // namespace o3tl
 
 #endif // INCLUDED_O3TL_MAKE_SHARED_HXX
diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx
index 3083cf0fd18a..75f5b463a58c 100644
--- a/sc/source/ui/view/cellsh2.cxx
+++ b/sc/source/ui/view/cellsh2.cxx
@@ -66,6 +66,7 @@
 #include <markdata.hxx>
 #include <documentlinkmgr.hxx>
 
+#include <o3tl/make_shared.hxx>
 #include <memory>
 
 using namespace com::sun::star;
@@ -793,7 +794,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
         break;
         case SID_DATA_PROVIDER:
         {
-            std::shared_ptr<ScDocument> xDoc(new ScDocument, o3tl::default_delete<ScDocument>());
+            auto xDoc = o3tl::make_shared<ScDocument>();
             xDoc->InsertTab(0, "test");
             ScDocument* pDoc = GetViewData()->GetDocument();
             ScDataProviderDlg aDialog(pTabViewShell->GetDialogParent(), xDoc, pDoc);
diff --git a/sc/source/ui/view/tabvwshc.cxx b/sc/source/ui/view/tabvwshc.cxx
index 432bbb670675..19b99ec93aa8 100644
--- a/sc/source/ui/view/tabvwshc.cxx
+++ b/sc/source/ui/view/tabvwshc.cxx
@@ -71,6 +71,7 @@
 #include <PivotLayoutDialog.hxx>
 
 #include <comphelper/lok.hxx>
+#include <o3tl/make_shared.hxx>
 #include <LibreOfficeKit/LibreOfficeKitEnums.h>
 
 void ScTabViewShell::SetCurRefDlgId( sal_uInt16 nNew )
@@ -397,7 +398,7 @@ std::shared_ptr<SfxModelessDialogController> ScTabViewShell::CreateRefDialogCont
             if (!isLOKMobilePhone())
             {
                 // dialog checks, what is in the cell
-                xResult = std::make_shared<ScFormulaDlg>(pB, pCW, pParent, &GetViewData(),ScGlobal::GetStarCalcFunctionMgr());
+                xResult = o3tl::make_shared<ScFormulaDlg>(pB, pCW, pParent, &GetViewData(),ScGlobal::GetStarCalcFunctionMgr());
             }
             break;
         }
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 68ad3415a08a..05e78a46c332 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -99,7 +99,7 @@
 #include <com/sun/star/drawing/XShape.hpp>
 #include <com/sun/star/linguistic2/XLinguProperties.hpp>
 #include <o3tl/cppunittraitshelper.hxx>
-#include <o3tl/deleter.hxx>
+#include <o3tl/make_shared.hxx>
 #include <osl/file.hxx>
 #include <osl/thread.hxx>
 #include <paratr.hxx>
@@ -1013,7 +1013,7 @@ void SwUiWriterTest::testExportRTF()
     pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/true, 3, /*bBasicCall=*/false);
 
     // Create the clipboard document.
-    std::shared_ptr<SwDoc> xClpDoc(new SwDoc, o3tl::default_delete<SwDoc>());
+    auto xClpDoc = o3tl::make_shared<SwDoc>();
     xClpDoc->SetClipBoard(true);
     pWrtShell->Copy(xClpDoc.get());
 
diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx
index e06663706d6e..925ec4a34952 100644
--- a/vcl/source/gdi/impgraph.cxx
+++ b/vcl/source/gdi/impgraph.cxx
@@ -21,7 +21,7 @@
 #include <sal/log.hxx>
 
 #include <comphelper/fileformat.h>
-#include <o3tl/deleter.hxx>
+#include <o3tl/make_shared.hxx>
 #include <tools/fract.hxx>
 #include <tools/vcompat.hxx>
 #include <tools/urlobj.hxx>
@@ -1361,7 +1361,7 @@ bool ImpGraphic::swapOut()
     const INetURLObject aTempFileURL(aTempFile.GetURL());
 
     // Create a swap file
-    std::shared_ptr<ImpSwapFile> pSwapFile(new ImpSwapFile(aTempFileURL, getOriginURL()), o3tl::default_delete<ImpSwapFile>());
+    auto pSwapFile = o3tl::make_shared<ImpSwapFile>(aTempFileURL, getOriginURL());
 
     bool bResult = false;
 


More information about the Libreoffice-commits mailing list