stoc/source/javaloader/javaloader.cxx | 14 +++----------- svl/source/numbers/zforlist.cxx | 19 ++++++------------- svtools/source/config/helpopt.cxx | 13 ++----------- svtools/source/config/menuoptions.cxx | 21 +++------------------ svtools/source/config/printoptions.cxx | 21 +++------------------ ucb/source/sorter/sortdynres.cxx | 13 ++----------- ucb/source/sorter/sortresult.cxx | 13 ++----------- unotools/source/config/syslocaleoptions.cxx | 19 ++++++------------- unotools/source/misc/syslocale.cxx | 19 ++++++------------- 9 files changed, 33 insertions(+), 119 deletions(-)
New commits: commit 6149da20ddee5c0c50b445fb6a4e3e81b5ff900b Author: Jochen Nitschke <j.nitschke+loger...@ok.de> Date: Sat Jun 17 14:01:36 2017 +0200 replace misc double checked locking patterns ... with thread safe local statics Change-Id: Ie3c8023776a388846b989f00a0be185273c0d5da Reviewed-on: https://gerrit.libreoffice.org/38907 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/stoc/source/javaloader/javaloader.cxx b/stoc/source/javaloader/javaloader.cxx index db850bdb5e6a..01000b0ab827 100644 --- a/stoc/source/javaloader/javaloader.cxx +++ b/stoc/source/javaloader/javaloader.cxx @@ -330,17 +330,9 @@ css::uno::Reference<XInterface> SAL_CALL JavaComponentLoader::activate( static Mutex & getInitMutex() { - static Mutex * pMutex = nullptr; - if( ! pMutex ) - { - MutexGuard guard( Mutex::getGlobalMutex() ); - if( ! pMutex ) - { - static Mutex mutex; - pMutex = &mutex; - } - } - return *pMutex; + static Mutex ourMutex; + + return ourMutex; } /// @throws Exception diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index 876dfbde187e..1b77382bc6bd 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -350,19 +350,12 @@ void SvNumberFormatter::ChangeIntl(LanguageType eLnge) // static ::osl::Mutex& SvNumberFormatter::GetMutex() { - static ::osl::Mutex* pMutex = nullptr; - if( !pMutex ) - { - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); - if( !pMutex ) - { - // #i77768# Due to a static reference in the toolkit lib - // we need a mutex that lives longer than the svl library. - // Otherwise the dtor would use a destructed mutex!! - pMutex = new ::osl::Mutex; - } - } - return *pMutex; + // #i77768# Due to a static reference in the toolkit lib + // we need a mutex that lives longer than the svl library. + // Otherwise the dtor would use a destructed mutex!! + static ::osl::Mutex persistantMutex; + + return persistantMutex; } diff --git a/svtools/source/config/helpopt.cxx b/svtools/source/config/helpopt.cxx index 381d67f7f0a4..bc1ac4d014c1 100644 --- a/svtools/source/config/helpopt.cxx +++ b/svtools/source/config/helpopt.cxx @@ -98,18 +98,9 @@ Sequence< OUString > const & SvtHelpOptions_Impl::GetPropertyNames() ::osl::Mutex & SvtHelpOptions_Impl::getInitMutex() { - static ::osl::Mutex *pMutex = nullptr; + static ::osl::Mutex ourMutex; - if( ! pMutex ) - { - ::osl::MutexGuard guard( ::osl::Mutex::getGlobalMutex() ); - if( ! pMutex ) - { - static ::osl::Mutex mutex; - pMutex = &mutex; - } - } - return *pMutex; + return ourMutex; } SvtHelpOptions_Impl::SvtHelpOptions_Impl() diff --git a/svtools/source/config/menuoptions.cxx b/svtools/source/config/menuoptions.cxx index cc8b64b760bc..8bec940d4000 100644 --- a/svtools/source/config/menuoptions.cxx +++ b/svtools/source/config/menuoptions.cxx @@ -410,24 +410,9 @@ void SvtMenuOptions::SetContextMenuShortcuts(TriState eState) Mutex& SvtMenuOptions::GetOwnStaticMutex() { - // Initialize static mutex only for one time! - static Mutex* pMutex = nullptr; - // If these method first called (Mutex not already exist!) ... - if( pMutex == nullptr ) - { - // ... we must create a new one. Protect follow code with the global mutex - - // It must be - we create a static variable! - MutexGuard aGuard( Mutex::getGlobalMutex() ); - // We must check our pointer again - because it can be that another instance of our class will be faster than these! - if( pMutex == nullptr ) - { - // Create the new mutex and set it for return on static variable. - static Mutex aMutex; - pMutex = &aMutex; - } - } - // Return new created or already existing mutex object. - return *pMutex; + static Mutex ourMutex; + + return ourMutex; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/source/config/printoptions.cxx b/svtools/source/config/printoptions.cxx index be4a73644d4d..05ac6875d4a4 100644 --- a/svtools/source/config/printoptions.cxx +++ b/svtools/source/config/printoptions.cxx @@ -508,24 +508,9 @@ SvtBasePrintOptions::~SvtBasePrintOptions() Mutex& SvtBasePrintOptions::GetOwnStaticMutex() { - // Initialize static mutex only for one time! - static Mutex* pMutex = nullptr; - // If these method first called (Mutex not already exist!) ... - if( pMutex == nullptr ) - { - // ... we must create a new one. Protect follow code with the global mutex - - // It must be - we create a static variable! - MutexGuard aGuard( Mutex::getGlobalMutex() ); - // We must check our pointer again - because it can be that another instance of our class will be faster than these! - if( pMutex == nullptr ) - { - // Create the new mutex and set it for return on static variable. - static Mutex aMutex; - pMutex = &aMutex; - } - } - // Return new created or already existing mutex object. - return *pMutex; + static Mutex ourMutex; + + return ourMutex; } bool SvtBasePrintOptions::IsReduceTransparency() const diff --git a/ucb/source/sorter/sortdynres.cxx b/ucb/source/sorter/sortdynres.cxx index caa5f97afc72..c62f102cc0d2 100644 --- a/ucb/source/sorter/sortdynres.cxx +++ b/ucb/source/sorter/sortdynres.cxx @@ -40,18 +40,9 @@ using namespace comphelper; // The mutex to synchronize access to containers. static osl::Mutex& getContainerMutex() { - static osl::Mutex* pMutex = nullptr; - if( !pMutex ) - { - osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); - if( !pMutex ) - { - static osl::Mutex aMutex; - pMutex = &aMutex; - } - } + static osl::Mutex ourMutex; - return *pMutex; + return ourMutex; } diff --git a/ucb/source/sorter/sortresult.cxx b/ucb/source/sorter/sortresult.cxx index 154dc099831c..f842c45f78a6 100644 --- a/ucb/source/sorter/sortresult.cxx +++ b/ucb/source/sorter/sortresult.cxx @@ -49,18 +49,9 @@ using namespace cppu; // The mutex to synchronize access to containers. static osl::Mutex& getContainerMutex() { - static osl::Mutex* pMutex = nullptr; - if( !pMutex ) - { - osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); - if( !pMutex ) - { - static osl::Mutex aMutex; - pMutex = &aMutex; - } - } + static osl::Mutex ourMutex; - return *pMutex; + return ourMutex; } diff --git a/unotools/source/config/syslocaleoptions.cxx b/unotools/source/config/syslocaleoptions.cxx index 1bfb1be81109..ed1675ffaed1 100644 --- a/unotools/source/config/syslocaleoptions.cxx +++ b/unotools/source/config/syslocaleoptions.cxx @@ -523,19 +523,12 @@ SvtSysLocaleOptions::~SvtSysLocaleOptions() // static Mutex& SvtSysLocaleOptions::GetMutex() { - static Mutex* pMutex = nullptr; - if( !pMutex ) - { - MutexGuard aGuard( Mutex::getGlobalMutex() ); - if( !pMutex ) - { - // #i77768# Due to a static reference in the toolkit lib - // we need a mutex that lives longer than the svl library. - // Otherwise the dtor would use a destructed mutex!! - pMutex = new Mutex; - } - } - return *pMutex; + // #i77768# Due to a static reference in the toolkit lib + // we need a mutex that lives longer than the svl library. + // Otherwise the dtor would use a destructed mutex!! + static Mutex persistentMutex; + + return persistentMutex; } bool SvtSysLocaleOptions::IsModified() diff --git a/unotools/source/misc/syslocale.cxx b/unotools/source/misc/syslocale.cxx index 0955090391a2..0dcecca29392 100644 --- a/unotools/source/misc/syslocale.cxx +++ b/unotools/source/misc/syslocale.cxx @@ -134,19 +134,12 @@ SvtSysLocale::~SvtSysLocale() // static Mutex& SvtSysLocale::GetMutex() { - static Mutex* pMutex = nullptr; - if( !pMutex ) - { - MutexGuard aGuard( Mutex::getGlobalMutex() ); - if( !pMutex ) - { - // #i77768# Due to a static reference in the toolkit lib - // we need a mutex that lives longer than the svl library. - // Otherwise the dtor would use a destructed mutex!! - pMutex = new Mutex; - } - } - return *pMutex; + // #i77768# Due to a static reference in the toolkit lib + // we need a mutex that lives longer than the svl library. + // Otherwise the dtor would use a destructed mutex!! + static Mutex persistentMutex; + + return persistentMutex; } const LocaleDataWrapper& SvtSysLocale::GetLocaleData() const _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits