| Index: source/i18n/tzgnames.cpp
|
| diff --git a/source/i18n/tzgnames.cpp b/source/i18n/tzgnames.cpp
|
| index e6bd109b749bee9bfd6c9ea683f391c2000240ab..6389c862d6b301a12ad8982e5f86fc77ed663b51 100644
|
| --- a/source/i18n/tzgnames.cpp
|
| +++ b/source/i18n/tzgnames.cpp
|
| @@ -1,6 +1,6 @@
|
| /*
|
| *******************************************************************************
|
| -* Copyright (C) 2011-2013, International Business Machines Corporation and
|
| +* Copyright (C) 2011-2015, International Business Machines Corporation and
|
| * others. All Rights Reserved.
|
| *******************************************************************************
|
| */
|
| @@ -434,7 +434,7 @@ TZGNCore::initialize(const Locale& locale, UErrorCode& status) {
|
| TimeZone *tz = TimeZone::createDefault();
|
| const UChar *tzID = ZoneMeta::getCanonicalCLDRID(*tz);
|
| if (tzID != NULL) {
|
| - loadStrings(UnicodeString(tzID));
|
| + loadStrings(UnicodeString(TRUE, tzID, -1));
|
| }
|
| delete tz;
|
| }
|
| @@ -467,7 +467,7 @@ TZGNCore::getDisplayName(const TimeZone& tz, UTimeZoneGenericNameType type, UDat
|
| {
|
| const UChar* tzCanonicalID = ZoneMeta::getCanonicalCLDRID(tz);
|
| if (tzCanonicalID != NULL) {
|
| - getGenericLocationName(UnicodeString(tzCanonicalID), name);
|
| + getGenericLocationName(UnicodeString(TRUE, tzCanonicalID, -1), name);
|
| }
|
| }
|
| break;
|
| @@ -477,7 +477,7 @@ TZGNCore::getDisplayName(const TimeZone& tz, UTimeZoneGenericNameType type, UDat
|
| if (name.isEmpty()) {
|
| const UChar* tzCanonicalID = ZoneMeta::getCanonicalCLDRID(tz);
|
| if (tzCanonicalID != NULL) {
|
| - getGenericLocationName(UnicodeString(tzCanonicalID), name);
|
| + getGenericLocationName(UnicodeString(TRUE, tzCanonicalID, -1), name);
|
| }
|
| }
|
| break;
|
| @@ -620,7 +620,7 @@ TZGNCore::formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameT
|
| return name;
|
| }
|
|
|
| - UnicodeString tzID(uID);
|
| + UnicodeString tzID(TRUE, uID, -1);
|
|
|
| // Try to get a name from time zone first
|
| UTimeZoneNameType nameType = (type == UTZGNM_LONG) ? UTZNM_LONG_GENERIC : UTZNM_SHORT_GENERIC;
|
| @@ -631,12 +631,14 @@ TZGNCore::formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameT
|
| }
|
|
|
| // Try meta zone
|
| - UnicodeString mzID;
|
| + UChar mzIDBuf[32];
|
| + UnicodeString mzID(mzIDBuf, 0, UPRV_LENGTHOF(mzIDBuf));
|
| fTimeZoneNames->getMetaZoneID(tzID, date, mzID);
|
| if (!mzID.isEmpty()) {
|
| UErrorCode status = U_ZERO_ERROR;
|
| UBool useStandard = FALSE;
|
| int32_t raw, sav;
|
| + UChar tmpNameBuf[64];
|
|
|
| tz.getOffset(date, FALSE, raw, sav, status);
|
| if (U_FAILURE(status)) {
|
| @@ -694,7 +696,7 @@ TZGNCore::formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameT
|
| if (useStandard) {
|
| UTimeZoneNameType stdNameType = (nameType == UTZNM_LONG_GENERIC)
|
| ? UTZNM_LONG_STANDARD : UTZNM_SHORT_STANDARD;
|
| - UnicodeString stdName;
|
| + UnicodeString stdName(tmpNameBuf, 0, UPRV_LENGTHOF(tmpNameBuf));
|
| fTimeZoneNames->getDisplayName(tzID, stdNameType, date, stdName);
|
| if (!stdName.isEmpty()) {
|
| name.setTo(stdName);
|
| @@ -704,7 +706,8 @@ TZGNCore::formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameT
|
| // for some meta zones in some locales. This looks like a data bugs.
|
| // For now, we check if the standard name is different from its generic
|
| // name below.
|
| - UnicodeString mzGenericName;
|
| + UChar genNameBuf[64];
|
| + UnicodeString mzGenericName(genNameBuf, 0, UPRV_LENGTHOF(genNameBuf));
|
| fTimeZoneNames->getMetaZoneDisplayName(mzID, nameType, mzGenericName);
|
| if (stdName.caseCompare(mzGenericName, 0) == 0) {
|
| name.setToBogus();
|
| @@ -713,13 +716,14 @@ TZGNCore::formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameT
|
| }
|
| if (name.isEmpty()) {
|
| // Get a name from meta zone
|
| - UnicodeString mzName;
|
| + UnicodeString mzName(tmpNameBuf, 0, UPRV_LENGTHOF(tmpNameBuf));
|
| fTimeZoneNames->getMetaZoneDisplayName(mzID, nameType, mzName);
|
| if (!mzName.isEmpty()) {
|
| // Check if we need to use a partial location format.
|
| // This check is done by comparing offset with the meta zone's
|
| // golden zone at the given date.
|
| - UnicodeString goldenID;
|
| + UChar idBuf[32];
|
| + UnicodeString goldenID(idBuf, 0, UPRV_LENGTHOF(idBuf));
|
| fTimeZoneNames->getReferenceZoneID(mzID, fTargetRegion, goldenID);
|
| if (!goldenID.isEmpty() && goldenID != tzID) {
|
| TimeZone *goldenZone = TimeZone::createTimeZone(goldenID);
|
| @@ -1185,7 +1189,7 @@ U_CDECL_END
|
| * block.
|
| */
|
| static void sweepCache() {
|
| - int32_t pos = -1;
|
| + int32_t pos = UHASH_FIRST;
|
| const UHashElement* elem;
|
| double now = (double)uprv_getUTCtime();
|
|
|
|
|