Index: xfa/fxfa/parser/xfa_localemgr.cpp |
diff --git a/xfa/fxfa/parser/xfa_localemgr.cpp b/xfa/fxfa/parser/xfa_localemgr.cpp |
index 74565a7ea0afa12f26aa0ab01bb4706840025be1..cfa5801e3ce23485c513a730520191e25f56f002 100644 |
--- a/xfa/fxfa/parser/xfa_localemgr.cpp |
+++ b/xfa/fxfa/parser/xfa_localemgr.cpp |
@@ -6,6 +6,8 @@ |
#include "xfa/fxfa/parser/xfa_localemgr.h" |
+#include <time.h> |
+ |
#include <memory> |
#include <utility> |
@@ -1245,37 +1247,21 @@ CFX_WideStringC CXFA_LocaleMgr::GetConfigLocaleName(CXFA_Node* pConfig) { |
return m_wsConfigLocale.AsStringC(); |
} |
-static CXFA_TimeZoneProvider* g_pProvider = nullptr; |
- |
-// Static. |
-CXFA_TimeZoneProvider* CXFA_TimeZoneProvider::Create() { |
- ASSERT(!g_pProvider); |
- g_pProvider = new CXFA_TimeZoneProvider(); |
- return g_pProvider; |
-} |
- |
-// Static. |
-CXFA_TimeZoneProvider* CXFA_TimeZoneProvider::Get() { |
- if (!g_pProvider) { |
- g_pProvider = new CXFA_TimeZoneProvider(); |
- } |
- return g_pProvider; |
-} |
- |
-// Static. |
-void CXFA_TimeZoneProvider::Destroy() { |
- delete g_pProvider; |
- g_pProvider = nullptr; |
-} |
+static bool g_bProviderTimeZoneSet = false; |
-#include <time.h> |
CXFA_TimeZoneProvider::CXFA_TimeZoneProvider() { |
#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
- _tzset(); |
+ if (!g_bProviderTimeZoneSet) { |
+ g_bProviderTimeZoneSet = true; |
+ _tzset(); |
+ } |
m_tz.tzHour = (int8_t)(_timezone / 3600 * -1); |
m_tz.tzMinute = (int8_t)((FXSYS_abs(_timezone) % 3600) / 60); |
#else |
- tzset(); |
+ if (!g_bProviderTimeZoneSet) { |
+ g_bProviderTimeZoneSet = true; |
+ tzset(); |
+ } |
m_tz.tzHour = (int8_t)(timezone / 3600 * -1); |
m_tz.tzMinute = (int8_t)((FXSYS_abs((int)timezone) % 3600) / 60); |
#endif |
@@ -1283,10 +1269,6 @@ CXFA_TimeZoneProvider::CXFA_TimeZoneProvider() { |
CXFA_TimeZoneProvider::~CXFA_TimeZoneProvider() {} |
-void CXFA_TimeZoneProvider::SetTimeZone(FX_TIMEZONE& tz) { |
- m_tz = tz; |
-} |
- |
-void CXFA_TimeZoneProvider::GetTimeZone(FX_TIMEZONE& tz) { |
- tz = m_tz; |
+void CXFA_TimeZoneProvider::GetTimeZone(FX_TIMEZONE* tz) const { |
+ *tz = m_tz; |
} |