[Libreoffice-commits] core.git: include/unotools unotools/source

Xisco Fauli anistenis at gmail.com
Tue Jun 14 11:05:48 UTC 2016


 include/unotools/syslocale.hxx     |    3 +--
 unotools/source/misc/syslocale.cxx |   16 +++++++---------
 2 files changed, 8 insertions(+), 11 deletions(-)

New commits:
commit 3db4830c4137563f68c92aef4a31f2a39ac00748
Author: Xisco Fauli <anistenis at gmail.com>
Date:   Mon Jun 6 13:23:35 2016 +0200

    tdf#89329: use shared_ptr for pImpl in syslocale
    
    Change-Id: I646495e3538cb438a06765fe8cde252bad667bea
    Reviewed-on: https://gerrit.libreoffice.org/25969
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noelgrandin at gmail.com>

diff --git a/include/unotools/syslocale.hxx b/include/unotools/syslocale.hxx
index 037c6ed..5861577 100644
--- a/include/unotools/syslocale.hxx
+++ b/include/unotools/syslocale.hxx
@@ -45,8 +45,7 @@ class UNOTOOLS_DLLPUBLIC SvtSysLocale
 {
     friend class SvtSysLocale_Impl;     // access to mutex
 
-    static  SvtSysLocale_Impl*  pImpl;
-    static  sal_Int32           nRefCount;
+    std::shared_ptr<SvtSysLocale_Impl>  pImpl;
 
     UNOTOOLS_DLLPRIVATE static  ::osl::Mutex&               GetMutex();
 
diff --git a/unotools/source/misc/syslocale.cxx b/unotools/source/misc/syslocale.cxx
index e93e620..b0cef62 100644
--- a/unotools/source/misc/syslocale.cxx
+++ b/unotools/source/misc/syslocale.cxx
@@ -34,8 +34,7 @@
 using namespace osl;
 using namespace com::sun::star;
 
-SvtSysLocale_Impl*  SvtSysLocale::pImpl = nullptr;
-sal_Int32           SvtSysLocale::nRefCount = 0;
+std::weak_ptr<SvtSysLocale_Impl>  pSysLocale;
 
 class SvtSysLocale_Impl : public utl::ConfigurationListener
 {
@@ -114,19 +113,18 @@ void SvtSysLocale_Impl::setDateAcceptancePatternsConfig()
 SvtSysLocale::SvtSysLocale()
 {
     MutexGuard aGuard( GetMutex() );
+    pImpl = pSysLocale.lock();
     if ( !pImpl )
-        pImpl = new SvtSysLocale_Impl;
-    ++nRefCount;
+    {
+        pImpl = std::make_shared<SvtSysLocale_Impl>();
+        pSysLocale = pImpl;
+    }
 }
 
 SvtSysLocale::~SvtSysLocale()
 {
     MutexGuard aGuard( GetMutex() );
-    if ( !--nRefCount )
-    {
-        delete pImpl;
-        pImpl = nullptr;
-    }
+    pImpl.reset();
 }
 
 // static


More information about the Libreoffice-commits mailing list