mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-08 06:53:45 +00:00
ICU-6554 Implement proper freeing of allocated memory to avoid memory leak.
X-SVN-Rev: 24691
This commit is contained in:
parent
715a5f50cb
commit
9d289d4570
4 changed files with 31 additions and 6 deletions
|
@ -572,6 +572,7 @@ static void U_CALLCONV
|
|||
ucnvsel_close_selector_iterator(UEnumeration *enumerator) {
|
||||
uprv_free(((Enumerator*)(enumerator->context))->index);
|
||||
uprv_free(enumerator->context);
|
||||
uprv_free(enumerator);
|
||||
}
|
||||
|
||||
static int32_t U_CALLCONV
|
||||
|
|
|
@ -605,7 +605,10 @@ TimeZone::initDefault()
|
|||
ucln_i18n_registerCleanup(UCLN_I18N_TIMEZONE, timeZone_cleanup);
|
||||
}
|
||||
umtx_unlock(&LOCK);
|
||||
|
||||
// cleanup hostID from uprv_tzname()
|
||||
if (hostID != NULL) {
|
||||
uprv_free((char*)hostID);
|
||||
}
|
||||
delete default_zone;
|
||||
}
|
||||
|
||||
|
|
|
@ -933,7 +933,7 @@ void TestOpenVsOpenRules(){
|
|||
|
||||
/* make a string with these characters in it */
|
||||
strSize = (rand()%40) + 1;
|
||||
str = (UChar*)malloc(sizeof(UChar) * (strSize + 1));
|
||||
str = (UChar*)uprv_malloc(sizeof(UChar) * (strSize + 1));
|
||||
|
||||
for(z = 0; z < strSize; z++){
|
||||
str[z] = uset_charAt(eSet, rand()%eSize);
|
||||
|
@ -957,12 +957,12 @@ void TestOpenVsOpenRules(){
|
|||
|
||||
/* get sort keys for both of them, and check that the keys are identicle */
|
||||
sortKeyLen1 = ucol_getSortKey(c1, str, u_strlen(str), NULL, 0);
|
||||
sortKey1 = (uint8_t*)malloc(sizeof(uint8_t) * (sortKeyLen1 + 1));
|
||||
sortKey1 = (uint8_t*)uprv_malloc(sizeof(uint8_t) * (sortKeyLen1 + 1));
|
||||
/*memset(sortKey1, 0xFE, sortKeyLen1);*/
|
||||
ucol_getSortKey(c1, str, u_strlen(str), sortKey1, sortKeyLen1 + 1);
|
||||
|
||||
sortKeyLen2 = ucol_getSortKey(c2, str, u_strlen(str), NULL, 0);
|
||||
sortKey2 = (uint8_t*)malloc(sizeof(uint8_t) * (sortKeyLen2 + 1));
|
||||
sortKey2 = (uint8_t*)uprv_malloc(sizeof(uint8_t) * (sortKeyLen2 + 1));
|
||||
/*memset(sortKey2, 0xFE, sortKeyLen2);*/
|
||||
ucol_getSortKey(c2, str, u_strlen(str), sortKey2, sortKeyLen2 + 1);
|
||||
|
||||
|
@ -975,8 +975,9 @@ void TestOpenVsOpenRules(){
|
|||
|
||||
|
||||
/* clean up after each string */
|
||||
free(sortKey1);
|
||||
free(sortKey2);
|
||||
uprv_free(str);
|
||||
uprv_free(sortKey1);
|
||||
uprv_free(sortKey2);
|
||||
uset_close(eSet);
|
||||
}
|
||||
/* clean up after each locale */
|
||||
|
@ -984,6 +985,8 @@ void TestOpenVsOpenRules(){
|
|||
ucol_close(c1);
|
||||
ucol_close(c2);
|
||||
}
|
||||
/* final clean up */
|
||||
uset_close(stdSet);
|
||||
}
|
||||
/*
|
||||
----------------------------------------------------------------------------
|
||||
|
|
|
@ -271,10 +271,12 @@ static void TestConversionUTF8()
|
|||
res1 = ucnvsel_selectForUTF8(sel, text+i, -1, &status);
|
||||
/* make sure result is correct! */
|
||||
verifyResultUTF8(text+i, (const char**) encodings, num_rndm_encodings, res1, excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_SET);
|
||||
uenum_close(res1);
|
||||
|
||||
res1 = ucnvsel_selectForUTF8(sel, text+i, uprv_strlen(text+i), &status);
|
||||
/* make sure result is correct! */
|
||||
verifyResultUTF8(text+i, (const char**)encodings, num_rndm_encodings, res1, excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_SET);
|
||||
uenum_close(res1);
|
||||
}
|
||||
}
|
||||
uprv_free(text);
|
||||
|
@ -366,12 +368,16 @@ static void TestConversionUTF8()
|
|||
res1 = ucnvsel_selectForUTF8(sel, text+i, -1, &status);
|
||||
/* make sure result is correct! */
|
||||
verifyResultUTF8(text+i, (const char**)encodings, num_rndm_encodings, res1,excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_AND_FALLBACK_SET);
|
||||
uenum_close(res1);
|
||||
|
||||
res1 = ucnvsel_selectForUTF8(sel, text+i, uprv_strlen(text+i), &status);
|
||||
/* make sure result is correct! */
|
||||
verifyResultUTF8(text+i, (const char**)encodings, num_rndm_encodings, res1,excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_AND_FALLBACK_SET);
|
||||
uenum_close(res1);
|
||||
}
|
||||
}
|
||||
uprv_free(encodings[0]);
|
||||
uprv_free(encodings);
|
||||
uprv_free(text);
|
||||
ucnvsel_close(sel);
|
||||
prev = testCaseIdx + 1;
|
||||
|
@ -556,10 +562,12 @@ static void TestConversionUTF16()
|
|||
res1 = ucnvsel_selectForString(sel, text+i, -1, &status);
|
||||
/* make sure result is correct! */
|
||||
verifyResultUTF16(text+i, (const char**) encodings, num_rndm_encodings, res1, excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_SET);
|
||||
uenum_close(res1);
|
||||
|
||||
res1 = ucnvsel_selectForString(sel, text+i, u_strlen(text+i), &status);
|
||||
/* make sure result is correct! */
|
||||
verifyResultUTF16(text+i, (const char**)encodings, num_rndm_encodings, res1, excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_SET);
|
||||
uenum_close(res1);
|
||||
}
|
||||
}
|
||||
uprv_free(text);
|
||||
|
@ -652,12 +660,16 @@ static void TestConversionUTF16()
|
|||
res1 = ucnvsel_selectForString(sel, text+i, -1, &status);
|
||||
/* make sure result is correct! */
|
||||
verifyResultUTF16(text+i, (const char**)encodings, num_rndm_encodings, res1,excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_AND_FALLBACK_SET);
|
||||
uenum_close(res1);
|
||||
|
||||
res1 = ucnvsel_selectForString(sel, text+i, u_strlen(text+i), &status);
|
||||
/* make sure result is correct! */
|
||||
verifyResultUTF16(text+i, (const char**)encodings, num_rndm_encodings, res1,excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_AND_FALLBACK_SET);
|
||||
uenum_close(res1);
|
||||
}
|
||||
}
|
||||
uprv_free(encodings[0]);
|
||||
uprv_free(encodings);
|
||||
uprv_free(text);
|
||||
ucnvsel_close(sel);
|
||||
prev = testCaseIdx + 1;
|
||||
|
@ -796,10 +808,12 @@ static void TestSerializationAndUnserialization()
|
|||
res1 = ucnvsel_selectForString(sel, text+i, -1, &status);
|
||||
/* make sure result is correct! */
|
||||
verifyResultUTF16(text+i, (const char**) encodings, num_rndm_encodings, res1, excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_SET);
|
||||
uenum_close(res1);
|
||||
|
||||
res1 = ucnvsel_selectForString(sel, text+i, u_strlen(text+i), &status);
|
||||
/* make sure result is correct! */
|
||||
verifyResultUTF16(text+i, (const char**)encodings, num_rndm_encodings, res1, excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_SET);
|
||||
uenum_close(res1);
|
||||
}
|
||||
}
|
||||
uprv_free(text);
|
||||
|
@ -902,12 +916,16 @@ static void TestSerializationAndUnserialization()
|
|||
res1 = ucnvsel_selectForString(sel, text+i, -1, &status);
|
||||
/* make sure result is correct! */
|
||||
verifyResultUTF16(text+i, (const char**)encodings, num_rndm_encodings, res1,excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_AND_FALLBACK_SET);
|
||||
uenum_close(res1);
|
||||
|
||||
res1 = ucnvsel_selectForString(sel, text+i, u_strlen(text+i), &status);
|
||||
/* make sure result is correct! */
|
||||
verifyResultUTF16(text+i, (const char**)encodings, num_rndm_encodings, res1,excluded_sets[excluded_set_id], UCNV_ROUNDTRIP_AND_FALLBACK_SET);
|
||||
uenum_close(res1);
|
||||
}
|
||||
}
|
||||
uprv_free(encodings[0]);
|
||||
uprv_free(encodings);
|
||||
uprv_free(text);
|
||||
ucnvsel_close(sel);
|
||||
prev = testCaseIdx + 1;
|
||||
|
|
Loading…
Add table
Reference in a new issue