summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJochen Nitschke <j.nitschke+logerrit@ok.de>2017-06-17 14:01:36 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-06-17 15:43:38 +0200
commit6149da20ddee5c0c50b445fb6a4e3e81b5ff900b (patch)
tree7cfca9c16dff522f0c0e15809f9fe4b926078698
parent470752f50c146b449b1c9bdccc36ed031535663c (diff)
replace misc double checked locking patterns
... with thread safe local statics Change-Id: Ie3c8023776a388846b989f00a0be185273c0d5da Reviewed-on: https://gerrit.libreoffice.org/38907 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--stoc/source/javaloader/javaloader.cxx14
-rw-r--r--svl/source/numbers/zforlist.cxx19
-rw-r--r--svtools/source/config/helpopt.cxx13
-rw-r--r--svtools/source/config/menuoptions.cxx21
-rw-r--r--svtools/source/config/printoptions.cxx21
-rw-r--r--ucb/source/sorter/sortdynres.cxx13
-rw-r--r--ucb/source/sorter/sortresult.cxx13
-rw-r--r--unotools/source/config/syslocaleoptions.cxx19
-rw-r--r--unotools/source/misc/syslocale.cxx19
9 files changed, 33 insertions, 119 deletions
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