From 8bc5d287d9777c8672ce0c066a222e550be311c9 Mon Sep 17 00:00:00 2001 From: George Rhoten Date: Tue, 19 Feb 2008 05:05:51 +0000 Subject: [PATCH] ICU-6076 Reduce crashes and valgrind errors in tests for easier diagnostics. X-SVN-Rev: 23457 --- icu4c/source/test/cintltst/ccaltst.c | 31 ++++++--------------------- icu4c/source/test/cintltst/cdtrgtst.c | 7 ++---- icu4c/source/test/cintltst/cmsgtst.c | 31 ++++++++++++--------------- icu4c/source/test/cintltst/cnumtst.c | 17 +++++++++------ 4 files changed, 34 insertions(+), 52 deletions(-) diff --git a/icu4c/source/test/cintltst/ccaltst.c b/icu4c/source/test/cintltst/ccaltst.c index bcf44a8e1cc..6f75fe228c1 100644 --- a/icu4c/source/test/cintltst/ccaltst.c +++ b/icu4c/source/test/cintltst/ccaltst.c @@ -61,7 +61,7 @@ static void TestCalendar() UCalendar *caldef = 0, *caldef2 = 0, *calfr = 0, *calit = 0; UEnumeration* uenum = NULL; int32_t count, count2, i,j; - UChar *tzID = 0; + UChar tzID[4]; UChar *tzdname = 0; UErrorCode status = U_ZERO_ERROR; UDate now; @@ -215,7 +215,6 @@ static void TestCalendar() /*Testing the ucal_open() function*/ status = U_ZERO_ERROR; log_verbose("\nTesting the ucal_open()\n"); - tzID=(UChar*)malloc(sizeof(UChar) * 4); u_uastrcpy(tzID, "PST"); caldef=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status); if(U_FAILURE(status)){ @@ -393,7 +392,6 @@ static void TestCalendar() ucal_close(calit); /*closing the UDateFormat used */ udat_close(datdef); - free(tzID); free(result); free(tzdname); } @@ -404,7 +402,7 @@ static void TestCalendar() static void TestGetSetDateAPI() { UCalendar *caldef = 0, *caldef2 = 0; - UChar *tzID =0; + UChar tzID[4]; UDate d1; int32_t hour; int32_t zoneOffset; @@ -414,7 +412,6 @@ static void TestGetSetDateAPI() UChar temp[30]; log_verbose("\nOpening the calendars()\n"); - tzID=(UChar*)malloc(sizeof(UChar) * 4); u_strcpy(tzID, fgGMTID); /*open the calendars used */ caldef=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status); @@ -588,8 +585,6 @@ static void TestGetSetDateAPI() ucal_close(caldef); ucal_close(caldef2); udat_close(datdef); - free(tzID); - } /*----------------------------------------------------------- */ @@ -599,12 +594,11 @@ static void TestGetSetDateAPI() static void TestFieldGetSet() { UCalendar *cal = 0; - UChar *tzID = 0; + UChar tzID[4]; UDateFormat *datdef = 0; UDate d1; UErrorCode status=U_ZERO_ERROR; log_verbose("\nFetching pointer to UCalendar using the ucal_open()\n"); - tzID=(UChar*)malloc(sizeof(UChar) * 4); u_strcpy(tzID, fgGMTID); /*open the calendar used */ cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status); @@ -730,8 +724,6 @@ static void TestFieldGetSet() ucal_close(cal); udat_close(datdef); - free(tzID); - } @@ -744,7 +736,7 @@ static void TestAddRollExtensive() { UCalendar *cal = 0; int32_t i,limit; - UChar* tzID = 0; + UChar tzID[4]; UCalendarDateFields e; int32_t y,m,d,hr,min,sec,ms; int32_t maxlimit = 40; @@ -753,7 +745,6 @@ static void TestAddRollExtensive() log_verbose("Testing add and roll extensively\n"); - tzID=(UChar*)malloc(sizeof(UChar) * 4); u_uastrcpy(tzID, "PST"); /*open the calendar used */ cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_GREGORIAN, &status);; @@ -900,7 +891,6 @@ static void TestAddRollExtensive() } ucal_close(cal); - free(tzID); } /*------------------------------------------------------ */ @@ -909,11 +899,10 @@ static void TestGetLimits() { UCalendar *cal = 0; int32_t min, max, gr_min, le_max, ac_min, ac_max, val; - UChar* tzID = 0; + UChar tzID[4]; UErrorCode status = U_ZERO_ERROR; - tzID=(UChar*)malloc(sizeof(UChar) * 4); u_uastrcpy(tzID, "PST"); /*open the calendar used */ cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_GREGORIAN, &status);; @@ -992,7 +981,6 @@ static void TestGetLimits() ucal_close(cal); - free(tzID); } @@ -1011,9 +999,8 @@ static void TestDOWProgression() UDate date1; int32_t delta=24; UErrorCode status = U_ZERO_ERROR; - UChar* tzID = 0; + UChar tzID[4]; char tempMsgBuf[256]; - tzID=(UChar*)malloc(sizeof(UChar) * 4); u_strcpy(tzID, fgGMTID); /*open the calendar used */ cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status);; @@ -1060,8 +1047,6 @@ static void TestDOWProgression() ucal_close(cal); udat_close(datfor); - free(tzID); - } /* ------------------------------------- */ @@ -1087,10 +1072,9 @@ static void testZones(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn double temp; UDateFormat *datfor = 0; UErrorCode status = U_ZERO_ERROR; - UChar* tzID = 0; + UChar tzID[4]; char tempMsgBuf[256]; - tzID=(UChar*)malloc(sizeof(UChar) * 4); u_strcpy(tzID, fgGMTID); gmtcal=ucal_open(tzID, 3, "en_US", UCAL_TRADITIONAL, &status);; if (U_FAILURE(status)) { @@ -1158,7 +1142,6 @@ static void testZones(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn ucal_close(gmtcal); ucal_close(cal); udat_close(datfor); - free(tzID); } /* ------------------------------------- */ diff --git a/icu4c/source/test/cintltst/cdtrgtst.c b/icu4c/source/test/cintltst/cdtrgtst.c index 3ef0f780af0..e5eecfbda7e 100644 --- a/icu4c/source/test/cintltst/cdtrgtst.c +++ b/icu4c/source/test/cintltst/cdtrgtst.c @@ -1,6 +1,6 @@ /******************************************************************** * COPYRIGHT: - * Copyright (c) 1997-2006, International Business Machines Corporation and + * Copyright (c) 1997-2008, International Business Machines Corporation and * others. All Rights Reserved. ********************************************************************/ /******************************************************************************** @@ -202,12 +202,11 @@ void Test4059917() UDateFormat* def; UChar *myDate; UErrorCode status = U_ZERO_ERROR; - UChar *pattern; + UChar pattern[11]; UChar tzID[4]; log_verbose("Testing apply pattern and to pattern regressively\n"); u_uastrcpy(tzID, "PST"); - pattern=(UChar*)malloc(sizeof(UChar) * 11); u_uastrcpy(pattern, "yyyy/MM/dd"); log_verbose("%s\n", austrdup(pattern) ); def = udat_open(UDAT_IGNORE,UDAT_IGNORE,NULL,tzID,-1,pattern, u_strlen(pattern),&status); @@ -232,9 +231,7 @@ void Test4059917() u_uastrcpy(myDate, "19700112"); aux917( def, myDate ); udat_close(def); - free(pattern); free(myDate); - } void aux917( UDateFormat *fmt, UChar* str) diff --git a/icu4c/source/test/cintltst/cmsgtst.c b/icu4c/source/test/cintltst/cmsgtst.c index 96e01877029..c95f4d89376 100644 --- a/icu4c/source/test/cintltst/cmsgtst.c +++ b/icu4c/source/test/cintltst/cmsgtst.c @@ -1,6 +1,6 @@ /******************************************************************** * COPYRIGHT: - * Copyright (c) 1997-2006, International Business Machines Corporation and + * Copyright (c) 1997-2008, International Business Machines Corporation and * others. All Rights Reserved. ********************************************************************/ /******************************************************************************** @@ -131,6 +131,7 @@ static void MessageFormatTest( void ) } if(U_FAILURE(status)){ log_err("ERROR: failure in message format on testcase %d: %s\n", i, myErrorName(status) ); + continue; } if(u_strcmp(result, testResultStrings[i])==0){ log_verbose("PASS: MessagFormat successful on testcase : %d\n", i); @@ -287,7 +288,7 @@ static void TestSampleMessageFormat(void) if(U_FAILURE(status)){ log_err("Error: failure in message format on test#1: %s\n", myErrorName(status)); } - if(u_strcmp(result, expected)==0) + else if(u_strcmp(result, expected)==0) log_verbose("PASS: MessagFormat successful on test#1\n"); else{ log_err("FAIL: Error in MessageFormat on test#1 \n GOT: %s EXPECTED: %s\n", @@ -318,7 +319,7 @@ static void TestSampleMessageFormat(void) if(U_FAILURE(status)){ log_err("Error: failure in message format on test#2 : %s\n", myErrorName(status)); } - if(u_strcmp(result, expected)==0) + else if(u_strcmp(result, expected)==0) log_verbose("PASS: MessagFormat successful on test#2\n"); else{ log_err("FAIL: Error in MessageFormat on test#2\n GOT: %s EXPECTED: %s\n", @@ -343,7 +344,7 @@ static void TestSampleMessageFormat(void) if(U_FAILURE(status)){ log_err("Error: failure in message format on test#3 : %s\n", myErrorName(status)); } - if(u_strcmp(result, expected)==0) + else if(u_strcmp(result, expected)==0) log_verbose("PASS: MessagFormat successful on test#3\n"); else{ log_err("FAIL: Error in MessageFormat on test#3\n GOT: %s EXPECTED %s\n", austrdup(result), @@ -360,7 +361,7 @@ static void TestSampleMessageFormat(void) static void TestNewFormatAndParseAPI(void) { - UChar *result, *tzID, *str; + UChar *result, tzID[4], str[25]; UChar pattern[100]; UChar expected[100]; int32_t resultLengthOut, resultlength; @@ -378,9 +379,7 @@ static void TestNewFormatAndParseAPI(void) log_verbose("Testing format and parse with parse error\n"); - str=(UChar*)malloc(sizeof(UChar) * 25); u_uastrcpy(str, "disturbance in force"); - tzID=(UChar*)malloc(sizeof(UChar) * 4); u_uastrcpy(tzID, "PST"); cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status); if(U_FAILURE(status)){ @@ -455,8 +454,6 @@ static void TestNewFormatAndParseAPI(void) ucal_close(cal); free(result); - free(str); - free(tzID); ctest_resetTimeZone(); } @@ -513,7 +510,7 @@ static void TestSampleFormatAndParseWithError(void) if(U_FAILURE(status)){ log_err("ERROR: failure in message format test#4: %s\n", myErrorName(status)); } - if(u_strcmp(result, expected)==0) + else if(u_strcmp(result, expected)==0) log_verbose("PASS: MessagFormat successful on test#4\n"); else{ log_err("FAIL: Error in MessageFormat on test#4\n GOT: %s EXPECTED: %s\n", austrdup(result), @@ -528,7 +525,7 @@ static void TestSampleFormatAndParseWithError(void) if(U_FAILURE(status)){ log_err("ERROR: error in parsing: test#5: %s\n", myErrorName(status)); } - if(value!=7 && u_strcmp(str,ret)!=0) + else if(value!=7 && u_strcmp(str,ret)!=0) log_err("FAIL: Error in parseMessage on test#5 \n"); else log_verbose("PASS: parseMessage successful on test#5\n"); @@ -606,7 +603,7 @@ static void TestSampleFormatAndParse(void) if(U_FAILURE(status)){ log_err("ERROR: failure in message format test#4: %s\n", myErrorName(status)); } - if(u_strcmp(result, expected)==0) + else if(u_strcmp(result, expected)==0) log_verbose("PASS: MessagFormat successful on test#4\n"); else{ log_err("FAIL: Error in MessageFormat on test#4\n GOT: %s EXPECTED: %s\n", austrdup(result), @@ -621,7 +618,7 @@ static void TestSampleFormatAndParse(void) if(U_FAILURE(status)){ log_err("ERROR: error in parsing: test#5: %s\n", myErrorName(status)); } - if(value!=7 && u_strcmp(str,ret)!=0) + else if(value!=7 && u_strcmp(str,ret)!=0) log_err("FAIL: Error in parseMessage on test#5 \n"); else log_verbose("PASS: parseMessage successful on test#5\n"); @@ -756,7 +753,7 @@ static void TestParseMessage(void) if(U_FAILURE(status)){ log_err("ERROR: failure in parse Message on test#9: %s\n", myErrorName(status)); } - if(value==500.00 && u_strcmp(str,res)==0) + else if(value==500.00 && u_strcmp(str,res)==0) log_verbose("PASS: parseMessage successful on test#9\n"); else log_err("FAIL: Error in parseMessage on test#9 \n"); @@ -773,7 +770,7 @@ static void TestParseMessage(void) if(U_FAILURE(status)){ log_err("ERROR: failure in parse Message on test#10: %s\n", myErrorName(status)); } - if(value==123.00 && u_strcmp(str,res)==0) + else if(value==123.00 && u_strcmp(str,res)==0) log_verbose("PASS: parseMessage successful on test#10\n"); else log_err("FAIL: Error in parseMessage on test#10 \n"); @@ -827,7 +824,7 @@ static void TestMessageFormatWithValist( void ) if(U_FAILURE(status)){ log_err("ERROR: failure in message format on testcase %d: %s\n", i, myErrorName(status) ); } - if(u_strcmp(result, testResultStrings[i])==0){ + else if(u_strcmp(result, testResultStrings[i])==0){ log_verbose("PASS: MessagFormat successful on testcase : %d\n", i); } else{ @@ -887,7 +884,7 @@ static void TestParseMessageWithValist(void) if(U_FAILURE(status)){ log_err("ERROR: failure in parse Message on test#10: %s\n", myErrorName(status)); } - if(value==123.00 && u_strcmp(str,res)==0) + else if(value==123.00 && u_strcmp(str,res)==0) log_verbose("PASS: parseMessage successful on test#10\n"); else log_err("FAIL: Error in parseMessage on test#10 \n"); diff --git a/icu4c/source/test/cintltst/cnumtst.c b/icu4c/source/test/cintltst/cnumtst.c index 7a8df1f70b4..a681d7659c3 100644 --- a/icu4c/source/test/cintltst/cnumtst.c +++ b/icu4c/source/test/cintltst/cnumtst.c @@ -1,6 +1,6 @@ /******************************************************************** * COPYRIGHT: - * Copyright (c) 1997-2007, International Business Machines Corporation and + * Copyright (c) 1997-2008, International Business Machines Corporation and * others. All Rights Reserved. ********************************************************************/ /******************************************************************************** @@ -775,6 +775,7 @@ static void TestSignificantDigits() fmt=unum_open(UNUM_IGNORE, temp, -1, NULL, NULL,&status); if (U_FAILURE(status)) { log_err("got unexpected error for unum_open: '%s'\n", u_errorName(status)); + return; } unum_setAttribute(fmt, UNUM_SIGNIFICANT_DIGITS_USED, TRUE); unum_setAttribute(fmt, UNUM_MAX_SIGNIFICANT_DIGITS, 6); @@ -1224,25 +1225,25 @@ static void TestRBNFFormat() { u_uastrcpy(pat, "#,##0.0#;(#,##0.0#)"); formats[0] = unum_open(UNUM_PATTERN_DECIMAL, pat, -1, "en_US", &perr, &status); if (U_FAILURE(status)) { - log_err("unable to open decimal pattern"); + log_err("unable to open decimal pattern\n"); } status = U_ZERO_ERROR; formats[1] = unum_open(UNUM_SPELLOUT, NULL, 0, "en_US", &perr, &status); if (U_FAILURE(status)) { - log_err("unable to open spellout"); + log_err("unable to open spellout\n"); } status = U_ZERO_ERROR; formats[2] = unum_open(UNUM_ORDINAL, NULL, 0, "en_US", &perr, &status); if (U_FAILURE(status)) { - log_err("unable to open ordinal"); + log_err("unable to open ordinal\n"); } status = U_ZERO_ERROR; formats[3] = unum_open(UNUM_DURATION, NULL, 0, "en_US", &perr, &status); if (U_FAILURE(status)) { - log_err("unable to open duration"); + log_err("unable to open duration\n"); } status = U_ZERO_ERROR; @@ -1285,7 +1286,11 @@ static void TestRBNFFormat() { u_strcat(pat, tempUChars); formats[4] = unum_open(UNUM_PATTERN_RULEBASED, pat, -1, "en_US", &perr, &status); if (U_FAILURE(status)) { - log_err("unable to open rulebased pattern"); + log_err("unable to open rulebased pattern\n"); + } + if (U_FAILURE(status)) { + log_err("Something failed with %s\n", u_errorName(status)); + return; } for (i = 0; i < COUNT; ++i) {