diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-08-25 11:09:38 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-10-21 10:36:39 +0200 |
commit | e26f8d2592a3d7cc5b43b3246b364397dd704f0d (patch) | |
tree | 8677f333ba26a23f2999ab3a083696a8d2e29b74 /include | |
parent | 3dce7bd77c56e61cd9457b03e8cf4137a7630eb9 (diff) |
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@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/formula/formula.hxx | 5 | ||||
-rw-r--r-- | include/o3tl/deleter.hxx | 50 | ||||
-rw-r--r-- | include/svtools/ivctrl.hxx | 3 | ||||
-rw-r--r-- | include/svtools/templatefoldercache.hxx | 4 |
4 files changed, 57 insertions, 5 deletions
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. |