ICU-6554 Implement proper freeing of allocated memory to avoid memory leak.

X-SVN-Rev: 24691
This commit is contained in:
Michael Ow 2008-10-01 14:14:13 +00:00
parent 715a5f50cb
commit 9d289d4570
4 changed files with 31 additions and 6 deletions

View file

@ -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

View file

@ -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;
}

View file

@ -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);
}
/*
----------------------------------------------------------------------------

View file

@ -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;