| Index: xfa/src/fgas/src/localization/fx_locale.cpp
|
| diff --git a/xfa/src/fgas/src/localization/fx_locale.cpp b/xfa/src/fgas/src/localization/fx_locale.cpp
|
| index 46eeae0c4faf4689a4d9e7e1e07b7edf0b8ee511..ca12dbb69e4e19edad2d0efa50ad4a19d5cabad9 100644
|
| --- a/xfa/src/fgas/src/localization/fx_locale.cpp
|
| +++ b/xfa/src/fgas/src/localization/fx_locale.cpp
|
| @@ -55,8 +55,6 @@ static const FX_LOCALETIMEZONEINFO g_FXLocaleTimeZoneData[] = {
|
| {FXBSTR_ID(0, 'M', 'D', 'T'), -6, 0}, {FXBSTR_ID(0, 'M', 'S', 'T'), -7, 0},
|
| {FXBSTR_ID(0, 'P', 'D', 'T'), -7, 0}, {FXBSTR_ID(0, 'P', 'S', 'T'), -8, 0},
|
| };
|
| -static const int32_t g_iFXLocaleTimeZoneCount =
|
| - sizeof(g_FXLocaleTimeZoneData) / sizeof(FX_LOCALETIMEZONEINFO);
|
|
|
| static const CFX_WideStringC gs_wsTextSymbols = FX_WSTRC(L"AXO09");
|
| static const CFX_WideStringC gs_wsTimeSymbols = FX_WSTRC(L"hHkKMSFAzZ");
|
| @@ -2771,22 +2769,13 @@ static FX_BOOL FX_ParseLocaleTime(const CFX_WideString& wsTime,
|
| }
|
| FX_ResolveZone(hour, minute, tzDiff, pLocale);
|
| } else {
|
| - const FX_LOCALETIMEZONEINFO* pTimeZoneInfo = NULL;
|
| - int32_t iStart = 0;
|
| - int32_t iEnd = g_iFXLocaleTimeZoneCount - 1;
|
| - do {
|
| - int32_t iMid = (iStart + iEnd) / 2;
|
| - const FX_LOCALETIMEZONEINFO* pInfo = g_FXLocaleTimeZoneData + iMid;
|
| - if (dwHash == pInfo->uHash) {
|
| - pTimeZoneInfo = pInfo;
|
| - break;
|
| - } else if (dwHash < pInfo->uHash) {
|
| - iEnd = iMid - 1;
|
| - } else {
|
| - iStart = iMid + 1;
|
| - }
|
| - } while (iStart <= iEnd);
|
| - if (pTimeZoneInfo) {
|
| + const FX_LOCALETIMEZONEINFO* pEnd =
|
| + g_FXLocaleTimeZoneData + FX_ArraySize(g_FXLocaleTimeZoneData);
|
| + const FX_LOCALETIMEZONEINFO* pTimeZoneInfo =
|
| + std::lower_bound(g_FXLocaleTimeZoneData, pEnd, dwHash,
|
| + [](const FX_LOCALETIMEZONEINFO& info,
|
| + FX_DWORD hash) { return info.uHash < hash; });
|
| + if (pTimeZoneInfo < pEnd && dwHash == pTimeZoneInfo->uHash) {
|
| hour += pTimeZoneInfo->iHour;
|
| minute += pTimeZoneInfo->iHour > 0 ? pTimeZoneInfo->iMinute
|
| : -pTimeZoneInfo->iMinute;
|
|
|