diff --git a/icu4c/source/i18n/selfmt.cpp b/icu4c/source/i18n/selfmt.cpp index 18d5814dbbd..4c88d9cddad 100755 --- a/icu4c/source/i18n/selfmt.cpp +++ b/icu4c/source/i18n/selfmt.cpp @@ -87,6 +87,7 @@ SelectFormat::applyPattern(const UnicodeString& newPattern, UErrorCode& status) if (U_FAILURE(status)) { return; } + parsedValuesHash->setValueDeleter(uhash_deleteUnicodeString); //Process the state machine State state = startState; diff --git a/icu4c/source/test/cintltst/cmsgtst.c b/icu4c/source/test/cintltst/cmsgtst.c index a4592bc4cba..8fa72dd5642 100644 --- a/icu4c/source/test/cintltst/cmsgtst.c +++ b/icu4c/source/test/cintltst/cmsgtst.c @@ -681,6 +681,8 @@ static void TestMsgFormatSelect(void) if(U_FAILURE(status)){ log_data_err("ERROR: failure in message format on Select test#1 : %s \n", myErrorName(status)); } + free(str); + free(str1); /*Test a nested pattern*/ str=(UChar*)malloc(sizeof(UChar) * 25); @@ -709,7 +711,8 @@ static void TestMsgFormatSelect(void) if(U_FAILURE(status)){ log_data_err("ERROR: failure in message format on Select test#2 : %s \n", myErrorName(status)); } - + free(str); + free(str1); } /* test message format with a choice option */ diff --git a/icu4c/source/test/cintltst/cnumtst.c b/icu4c/source/test/cintltst/cnumtst.c index 23ae3707a0f..571d7890f9f 100644 --- a/icu4c/source/test/cintltst/cnumtst.c +++ b/icu4c/source/test/cintltst/cnumtst.c @@ -768,6 +768,7 @@ free(result); } else { log_verbose("unum_parseDouble with empty groupingSep: no hang, OK\n"); } + unum_close(dec_en); } /*closing the NumberFormat() using unum_close(UNumberFormat*)")*/ diff --git a/icu4c/source/test/cintltst/reapits.c b/icu4c/source/test/cintltst/reapits.c index 9861381d8aa..19a92f78343 100644 --- a/icu4c/source/test/cintltst/reapits.c +++ b/icu4c/source/test/cintltst/reapits.c @@ -106,6 +106,7 @@ static void test_assert_utext(const char *expected, UText *actual, const char *f } log_err("\"\n"); } + utext_close(&expectedText); } #define TEST_ASSERT_UTEXT(expected, actual) test_assert_utext(expected, actual, __FILE__, __LINE__) @@ -1862,6 +1863,7 @@ static void TestUTextAPI(void) { UChar text2[80]; UText *fields[10]; int32_t numFields; + int32_t i; u_uastrncpy(textToSplit, "first : second: third", sizeof(textToSplit)/2); u_uastrncpy(text2, "No match here.", sizeof(text2)/2); @@ -1889,6 +1891,9 @@ static void TestUTextAPI(void) { TEST_ASSERT_UTEXT(" third", fields[2]); TEST_ASSERT(fields[3] == NULL); } + for(i = 0; i < numFields; i++) { + utext_close(fields[i]); + } } uregex_close(re); @@ -1915,6 +1920,9 @@ static void TestUTextAPI(void) { TEST_ASSERT_UTEXT(" second: third", fields[1]); TEST_ASSERT(fields[2] == &patternText); } + for(i = 0; i < numFields; i++) { + utext_close(fields[i]); + } } uregex_close(re); @@ -1926,6 +1934,7 @@ static void TestUTextAPI(void) { UChar textToSplit[80]; UText *fields[10]; int32_t numFields; + int32_t i; u_uastrncpy(textToSplit, "first second third", sizeof(textToSplit)/2); @@ -1951,6 +1960,9 @@ static void TestUTextAPI(void) { TEST_ASSERT_UTEXT(" third", fields[4]); TEST_ASSERT(fields[5] == NULL); } + for(i = 0; i < numFields; i++) { + utext_close(fields[i]); + } } /* Split with too few output strings available (2) */ @@ -1968,6 +1980,10 @@ static void TestUTextAPI(void) { TEST_ASSERT_UTEXT(" second third", fields[1]); TEST_ASSERT(fields[2] == &patternText); } + for(i = 0; i < numFields; i++) { + utext_close(fields[i]); + } + /* Split with too few output strings available (3) */ status = U_ZERO_ERROR; @@ -1986,6 +2002,9 @@ static void TestUTextAPI(void) { TEST_ASSERT_UTEXT(" second third", fields[2]); TEST_ASSERT(fields[3] == &patternText); } + for(i = 0; i < numFields; i++) { + utext_close(fields[i]); + } /* Split with just enough output strings available (5) */ status = U_ZERO_ERROR; @@ -2008,6 +2027,9 @@ static void TestUTextAPI(void) { TEST_ASSERT_UTEXT(" third", fields[4]); TEST_ASSERT(fields[5] == &patternText); } + for(i = 0; i < numFields; i++) { + utext_close(fields[i]); + } /* Split, end of text is a field delimiter. */ status = U_ZERO_ERROR; @@ -2032,10 +2054,14 @@ static void TestUTextAPI(void) { TEST_ASSERT(fields[8] == NULL); TEST_ASSERT(fields[9] == &patternText); } + for(i = 0; i < numFields; i++) { + utext_close(fields[i]); + } } uregex_close(re); } + utext_close(&patternText); } #endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS */