mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-16 10:17:23 +00:00
ICU-8958 Review fixes - better handling of error conditions
X-SVN-Rev: 31099
This commit is contained in:
parent
9cc995e9cd
commit
122a779de8
2 changed files with 22 additions and 16 deletions
|
@ -1331,21 +1331,25 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
|
|||
narrowEras = ures_getByKeyWithFallback(erasMain, gNamesAbbrTag, NULL, &status);
|
||||
}
|
||||
|
||||
UResourceBundle *monthPatterns = calData.getByKey(gMonthPatternsTag, status);
|
||||
if (U_SUCCESS(status) && monthPatterns != NULL) {
|
||||
UErrorCode monthPatternStatus = U_ZERO_ERROR;
|
||||
UResourceBundle *monthPatterns = calData.getByKey(gMonthPatternsTag, monthPatternStatus);
|
||||
if (U_SUCCESS(monthPatternStatus) && monthPatterns != NULL) {
|
||||
fLeapMonthPatterns = newUnicodeStringArray(kMonthPatternsCount);
|
||||
if (fLeapMonthPatterns) {
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatWide, calData.getByKey2(gMonthPatternsTag, gNamesWideTag, status), status);
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatAbbrev, calData.getByKey2(gMonthPatternsTag, gNamesAbbrTag, status), status);
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatNarrow, calData.getByKey2(gMonthPatternsTag, gNamesNarrowTag, status), status);
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandaloneWide, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesWideTag, status), status);
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandaloneAbbrev, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesAbbrTag, status), status);
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandaloneNarrow, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesNarrowTag, status), status);
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternNumeric, calData.getByKey3(gMonthPatternsTag, gNamesNumericTag, gNamesAllTag, status), status);
|
||||
fLeapMonthPatternsCount = kMonthPatternsCount;
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatWide, calData.getByKey2(gMonthPatternsTag, gNamesWideTag, monthPatternStatus), monthPatternStatus);
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatAbbrev, calData.getByKey2(gMonthPatternsTag, gNamesAbbrTag, monthPatternStatus), monthPatternStatus);
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatNarrow, calData.getByKey2(gMonthPatternsTag, gNamesNarrowTag, monthPatternStatus), monthPatternStatus);
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandaloneWide, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesWideTag, monthPatternStatus), monthPatternStatus);
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandaloneAbbrev, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesAbbrTag, monthPatternStatus), monthPatternStatus);
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandaloneNarrow, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesNarrowTag, monthPatternStatus), monthPatternStatus);
|
||||
initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternNumeric, calData.getByKey3(gMonthPatternsTag, gNamesNumericTag, gNamesAllTag, monthPatternStatus), monthPatternStatus);
|
||||
if (U_SUCCESS(monthPatternStatus)) {
|
||||
fLeapMonthPatternsCount = kMonthPatternsCount;
|
||||
} else {
|
||||
delete[] fLeapMonthPatterns;
|
||||
fLeapMonthPatterns = NULL;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
status = U_ZERO_ERROR;
|
||||
}
|
||||
|
||||
UResourceBundle *lsweekdaysData = NULL; // Data closed by calData
|
||||
|
|
|
@ -1926,10 +1926,12 @@ SimpleDateFormat::parse(const UnicodeString& text, Calendar& cal, ParsePosition&
|
|||
}
|
||||
|
||||
if (fSymbols->fLeapMonthPatterns != NULL && fSymbols->fLeapMonthPatternsCount >= DateFormatSymbols::kMonthPatternsCount) {
|
||||
UErrorCode nlmfStatus = U_ZERO_ERROR;
|
||||
numericLeapMonthFormatter = new MessageFormat(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternNumeric], fLocale, nlmfStatus);
|
||||
if (U_FAILURE(nlmfStatus)) {
|
||||
numericLeapMonthFormatter = NULL;
|
||||
numericLeapMonthFormatter = new MessageFormat(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternNumeric], fLocale, status);
|
||||
if (numericLeapMonthFormatter == NULL) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
goto ExitParse;
|
||||
} else if (U_FAILURE(status)) {
|
||||
goto ExitParse; // this will delete numericLeapMonthFormatter
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue