if(status ==NULL||U_FAILURE(*status)){
return ;
}
- if(fmt==NULL||pattern==NULL||patternLength<-1){
+ if(fmt==NULL || (pattern==NULL && patternLength!=0) || patternLength<-1) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return ;
}
if(parseError==NULL){
parseError = &tErr;
}
- if(patternLength<-1){
- patternLength=u_strlen(pattern);
- }
+ // UnicodeString(pattern, -1) calls u_strlen().
((MessageFormat*)fmt)->applyPattern(UnicodeString(pattern,patternLength),*parseError,*status);
}
UMessageFormat formatter = umsg_open(testCasePatterns[0],patternLength,"en_US",NULL,&ec);
if(U_FAILURE(ec)){
- log_data_err("umsg_open() failed for testCasePattens[%d]. -> %s (Are you missing data?)\n",i, u_errorName(ec));
+ log_data_err("umsg_open() failed for testCasePattens[0]. -> %s (Are you missing data?)\n", u_errorName(ec));
return;
}
for(i = 0;i<cnt_testCases; i++){
UDate d2=0;
result=NULL;
- patternLength = u_strlen(testCasePatterns[i]);
-
+ // Alternate between specifying the length and using NUL-termination.
+ patternLength = ((i & 1) == 0) ? u_strlen(testCasePatterns[i]) : -1;
+
umsg_applyPattern(formatter,testCasePatterns[i],patternLength,&parseError,&ec);
if(U_FAILURE(ec)){
log_err("umsg_applyPattern() failed for testCasePattens[%d].\n",i);