From b6ff1393d5ddf2e405d6a78da53bcda76a7b6b80 Mon Sep 17 00:00:00 2001 From: gnrunge Date: Thu, 3 Sep 2020 16:28:38 -0700 Subject: [PATCH] ICU-21268 Add error checks to avoid segmentation faults if tests run with stubdata only. ICU-21268 Use 'nullptr' instead of NULL when checking for pointer value. ICU-21268: Fixes error message. ICU-21268 Style fixes (space before '{'). --- icu4c/source/test/intltest/dtfmttst.cpp | 14 +++++++++++++- icu4c/source/test/intltest/numfmtst.cpp | 6 ++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/icu4c/source/test/intltest/dtfmttst.cpp b/icu4c/source/test/intltest/dtfmttst.cpp index fc0a5f67cf9..3bd51368569 100644 --- a/icu4c/source/test/intltest/dtfmttst.cpp +++ b/icu4c/source/test/intltest/dtfmttst.cpp @@ -3478,6 +3478,7 @@ void DateFormatTest::TestTimeZoneInLocale() UnicodeString actual; SimpleDateFormat smptfmt("Z", locale, status); + ASSERT_OK(status); assertEquals("TimeZone from SimpleDateFormat constructor", expectedTimezone, smptfmt.getTimeZone().getID(actual)); assertEquals("Calendar from SimpleDateFormat constructor", @@ -3485,13 +3486,20 @@ void DateFormatTest::TestTimeZoneInLocale() LocalPointer datefmt( DateFormat::createDateInstance(DateFormat::kDefault, locale)); + if (datefmt == nullptr) { + dataerrln("Error calling DateFormat::createDateInstance()"); + return; + } assertEquals("TimeZone from DateFormat::createDateInstance", expectedTimezone, datefmt->getTimeZone().getID(actual)); assertEquals("Calendar from DateFormat::createDateInstance", testLine[2], datefmt->getCalendar()->getType()); - LocalPointer timefmt( DateFormat::createTimeInstance(DateFormat::kDefault, locale)); + if (timefmt == nullptr) { + dataerrln("Error calling DateFormat::createTimeInstance()"); + return; + } assertEquals("TimeZone from TimeFormat::createTimeInstance", expectedTimezone, timefmt->getTimeZone().getID(actual)); assertEquals("Calendar from DateFormat::createTimeInstance", @@ -3500,6 +3508,10 @@ void DateFormatTest::TestTimeZoneInLocale() LocalPointer datetimefmt( DateFormat::createDateTimeInstance( DateFormat::kDefault, DateFormat::kDefault, locale)); + if (datetimefmt == nullptr) { + dataerrln("Error calling DateFormat::createDateTimeInstance()"); + return; + } assertEquals("TimeZone from DateTimeFormat::createDateTimeInstance", expectedTimezone, datetimefmt->getTimeZone().getID(actual)); assertEquals("Calendar from DateFormat::createDateTimeInstance", diff --git a/icu4c/source/test/intltest/numfmtst.cpp b/icu4c/source/test/intltest/numfmtst.cpp index 3be453fa9e7..86e103291a8 100644 --- a/icu4c/source/test/intltest/numfmtst.cpp +++ b/icu4c/source/test/intltest/numfmtst.cpp @@ -10013,7 +10013,13 @@ void NumberFormatTest::Test13733_StrictAndLenient() { ParsePosition ppos; DecimalFormatSymbols dfs(Locale::getEnglish(), status); + if (status.errDataIfFailureAndReset()) { + return; + } DecimalFormat df(patternString, dfs, status); + if (status.errDataIfFailureAndReset()) { + return; + } df.setLenient(FALSE); LocalPointer ca_strict(df.parseCurrency(inputString, ppos)); if (ca_strict != nullptr) {