From 2c1c85aee897a19edbd06f98aaf9291f72dc5850 Mon Sep 17 00:00:00 2001 From: Tom Zhang Date: Fri, 1 Aug 2014 21:33:16 +0000 Subject: [PATCH] ICU-10320 fix compiler warning & solaris error X-SVN-Rev: 36119 --- icu4c/source/i18n/smpdtfmt.cpp | 6 +++++ icu4c/source/test/cintltst/cdattst.c | 40 +++++++++++++++------------- icu4c/source/test/cintltst/cdattst.h | 2 +- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/icu4c/source/i18n/smpdtfmt.cpp b/icu4c/source/i18n/smpdtfmt.cpp index 8085dc12e36..0d5f90a4f82 100644 --- a/icu4c/source/i18n/smpdtfmt.cpp +++ b/icu4c/source/i18n/smpdtfmt.cpp @@ -1650,6 +1650,9 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo, void SimpleDateFormat::adoptNumberFormat(NumberFormat *formatToAdopt) { formatToAdopt->setParseIntegerOnly(TRUE); + if (fNumberFormat && fNumberFormat != formatToAdopt){ + delete fNumberFormat; + } fNumberFormat = formatToAdopt; if (fNumberFormatters) { @@ -1668,6 +1671,9 @@ void SimpleDateFormat::adoptNumberFormat(NumberFormat *formatToAdopt) { if (cur->nf != formatToAdopt) { // only delete those not duplicate delete cur->nf; uprv_free(cur); + } else { + cur->nf = NULL; + uprv_free(cur); } } } diff --git a/icu4c/source/test/cintltst/cdattst.c b/icu4c/source/test/cintltst/cdattst.c index a4deee23502..a518d7c1909 100644 --- a/icu4c/source/test/cintltst/cdattst.c +++ b/icu4c/source/test/cintltst/cdattst.c @@ -55,7 +55,7 @@ void addDateForTest(TestNode** root) TESTCASE(TestRelativeCrash); TESTCASE(TestContext); TESTCASE(TestCalendarDateParse); - TESTCASE(TestOverrideNumberForamt); + TESTCASE(TestOverrideNumberFormat); } /* Testing the DateFormat API */ static void TestDateFormat() @@ -1555,7 +1555,7 @@ static const char * overrideNumberFormat[][2] = { {"mixed", "\\u521D\\u4E03 \\u521D\\u4E8C"} }; -static void TestOverrideNumberForamt(void) { +static void TestOverrideNumberFormat(void) { UErrorCode status = U_ZERO_ERROR; UChar pattern[50]; UChar* expected; @@ -1566,8 +1566,8 @@ static void TestOverrideNumberForamt(void) { UDateFormat* fmt; UNumberFormat* overrideFmt; const UNumberFormat* getter_result; - UDate july022008 = 1215000000000.0; int32_t i; + unsigned j; expected=(UChar*)malloc(sizeof(UChar) * 10); fields=(UChar*)malloc(sizeof(UChar) * 10); @@ -1592,23 +1592,23 @@ static void TestOverrideNumberForamt(void) { udat_setNumberFormat(fmt, overrideFmt); // test the same override NF will not crash udat_close(fmt); - for (i=0; i