ICU-10992 merge from trunk, fix memory leak
X-SVN-Rev: 36540
diff --git a/APIChangeReport.html b/APIChangeReport.html
index 7a679c0..dde5c7b 100644
--- a/APIChangeReport.html
+++ b/APIChangeReport.html
@@ -4496,7 +4496,7 @@
<a href="#_top">(jump back to top)</a>
<hr>
<p>
-<i><font size="-1">Contents generated by StableAPI tool on Tue Sep 16 04:14:38 EDT 2014<br>Copyright (C) 2014, International Business Machines Corporation, All Rights Reserved.</font></i>
+<i><font size="-1">Contents generated by StableAPI tool on Tue Sep 16 12:21:04 PDT 2014<br>Copyright (C) 2014, International Business Machines Corporation, All Rights Reserved.</font></i>
</p>
</body>
</html>
diff --git a/source/test/cintltst/cdattst.c b/source/test/cintltst/cdattst.c
index 86e9db1..2abc310 100644
--- a/source/test/cintltst/cdattst.c
+++ b/source/test/cintltst/cdattst.c
@@ -1582,35 +1582,43 @@
char bbuf2[kBbufMax];
const char* localeString = "zh@numbers=hanidays";
UDateFormat* fmt;
- UNumberFormat* overrideFmt;
const UNumberFormat* getter_result;
int32_t i;
unsigned j;
- fmt=udat_open(UDAT_PATTERN, UDAT_PATTERN,"en_US",NULL,0,pattern, u_strlen(pattern), &status);
- if (!assertSuccess("udat_open()", &status)) {
- return;
- }
-
- overrideFmt = unum_open(UNUM_DEFAULT, NULL, 0, localeString, NULL, &status);
- assertSuccess("unum_open()", &status);
-
expected=(UChar*)malloc(sizeof(UChar) * 10);
fields=(UChar*)malloc(sizeof(UChar) * 10);
u_uastrcpy(fields, "d");
u_uastrcpy(pattern,"MM d");
+ fmt=udat_open(UDAT_PATTERN, UDAT_PATTERN,"en_US",NULL,0,pattern, u_strlen(pattern), &status);
+ if (!assertSuccess("udat_open()", &status)) {
+ return;
+ }
+
// loop 50 times to check getter/setter
- for (i = 0; i < 50; i++){
+ for (i = 0; i < 5; i++){
+ UNumberFormat* overrideFmt;
+ overrideFmt = unum_open(UNUM_DEFAULT, NULL, 0, localeString, NULL, &status);
+ assertSuccess("unum_open()", &status);
+
udat_adoptNumberFormatForFields(fmt, fields, overrideFmt, &status);
+ overrideFmt = NULL; // no longer valid
assertSuccess("udat_setNumberFormatForField()", &status);
getter_result = udat_getNumberFormatForField(fmt, 'd');
- if (getter_result != overrideFmt)
- log_err("FAIL: udat_getNumberFormatForField does not work\n");
+ if(getter_result == NULL) {
+ log_err("FAIL: udat_getNumberFormatForField did not return a valid pointer\n");
+ }
}
- udat_setNumberFormat(fmt, overrideFmt); // test the same override NF will not crash
+
+ {
+ UNumberFormat* overrideFmt;
+ overrideFmt = unum_open(UNUM_DEFAULT, NULL, 0, localeString, NULL, &status);
+ assertSuccess("unum_open()", &status);
+ udat_setNumberFormat(fmt, overrideFmt); // test the same override NF will not crash
+ }
udat_close(fmt);
for (j=0; i<sizeof(overrideNumberFormat)/sizeof(overrideNumberFormat[0]); i++){