diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-12-17 13:40:44 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-12-18 08:47:42 +0100 |
commit | 998ad9b8b1d0eb08b2515ea2086b9f3de58492e7 (patch) | |
tree | bf918e150840cfae25808c76b2c41c2cb2791bbf /xmlsecurity/source | |
parent | bcd45c2ab6cbdef1d8b82b327be92b30d49c09fb (diff) |
Elide use of rtl_Instance (which is obsoleted by C++11 thread-safe statics)
Change-Id: I522c42d1fe97de2b1a8a629c97cf68e11006a328
Reviewed-on: https://gerrit.libreoffice.org/85327
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'xmlsecurity/source')
-rw-r--r-- | xmlsecurity/source/xmlsec/nss/nssinitializer.cxx | 41 |
1 files changed, 9 insertions, 32 deletions
diff --git a/xmlsecurity/source/xmlsec/nss/nssinitializer.cxx b/xmlsecurity/source/xmlsec/nss/nssinitializer.cxx index e268e6e25d63..421adfdf16e3 100644 --- a/xmlsecurity/source/xmlsec/nss/nssinitializer.cxx +++ b/xmlsecurity/source/xmlsec/nss/nssinitializer.cxx @@ -25,7 +25,6 @@ #include <cppuhelper/supportsservice.hxx> #include <officecfg/Office/Common.hxx> #include <sal/types.h> -#include <rtl/instance.hxx> #include <rtl/bootstrap.hxx> #include <rtl/string.hxx> #include <osl/file.hxx> @@ -158,35 +157,6 @@ salhelper::SingletonRef<InitNSSPrivate>* getInitNSSPrivate() bool nsscrypto_initialize( const css::uno::Reference< css::uno::XComponentContext > &rxContext, bool & out_nss_init ); -struct InitNSSInitialize -{ - css::uno::Reference< css::uno::XComponentContext > m_xContext; - - explicit InitNSSInitialize(const css::uno::Reference<css::uno::XComponentContext> &rxContext) - : m_xContext(rxContext) - { - } - - bool * operator()() - { - static bool bInitialized = false; - bool bNSSInit = false; - bInitialized = nsscrypto_initialize( m_xContext, bNSSInit ); - if (bNSSInit) - atexit(nsscrypto_finalize ); - return & bInitialized; - } -}; - -struct GetNSSInitStaticMutex -{ - ::osl::Mutex* operator()() - { - static ::osl::Mutex aNSSInitMutex; - return &aNSSInitMutex; - } -}; - #ifdef XMLSEC_CRYPTO_NSS void deleteRootsModule() @@ -504,8 +474,15 @@ ONSSInitializer::~ONSSInitializer() bool ONSSInitializer::initNSS( const css::uno::Reference< css::uno::XComponentContext > &rxContext ) { - return *rtl_Instance< bool, InitNSSInitialize, ::osl::MutexGuard, GetNSSInitStaticMutex > - ::create( InitNSSInitialize( rxContext ), GetNSSInitStaticMutex() ); + static bool gbInitialized = [&rxContext]() + { + bool bNSSInit = false; + bool bInitialized = nsscrypto_initialize( rxContext, bNSSInit ); + if (bNSSInit) + atexit(nsscrypto_finalize); + return bInitialized; + }(); + return gbInitialized; } css::uno::Reference< css::xml::crypto::XDigestContext > SAL_CALL ONSSInitializer::getDigestContext( ::sal_Int32 nDigestID, const css::uno::Sequence< css::beans::NamedValue >& aParams ) |