tdf#89329: use shared_ptr for pImpl in syslocale
Change-Id: I646495e3538cb438a06765fe8cde252bad667bea Reviewed-on: https://gerrit.libreoffice.org/25969 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
This commit is contained in:
parent
60e57960f2
commit
3db4830c41
@ -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();
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user