diff options
author | tsepez <tsepez@chromium.org> | 2016-11-11 17:23:48 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-11-11 17:23:48 -0800 |
commit | 211d4edbe2f71ca62c76f36ce25090342c58e43c (patch) | |
tree | 645a4823ce6df9021333552b55288cd13344a4f9 /xfa/fxfa/parser/xfa_localemgr.cpp | |
parent | 8f3eb6051c0465923d6694bd0f0b6dc5bb51cbe3 (diff) | |
download | pdfium-211d4edbe2f71ca62c76f36ce25090342c58e43c.tar.xz |
Add fpdfppo_embeddertest.cpp.
The lack of coverage of the fpdfppo APIs was noticed while
trying to diagnose another issue. Adding basic calls to
these APIs then kicked out an assert in XFA, where duplicate
global CFXA_TimeZoneProviders were not expected. These are
cheap to create except for the global C RTL tzset() call, so
keep track of that and make these on demand.
Review-Url: https://codereview.chromium.org/2488403004
Diffstat (limited to 'xfa/fxfa/parser/xfa_localemgr.cpp')
-rw-r--r-- | xfa/fxfa/parser/xfa_localemgr.cpp | 44 |
1 files changed, 13 insertions, 31 deletions
diff --git a/xfa/fxfa/parser/xfa_localemgr.cpp b/xfa/fxfa/parser/xfa_localemgr.cpp index 74565a7ea0..cfa5801e3c 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; } |