Set global error if insufficient numeric args. WS.

This commit is contained in:
Gustavo André dos Santos Lopes 2012-05-06 00:48:17 +02:00
parent f1621485ad
commit 407455876e
3 changed files with 12 additions and 12 deletions

View File

@ -44,10 +44,10 @@ static void msgfmt_do_format(MessageFormatter_object *mfo, zval *args, zval *ret
/* umsg_format_arg_count() always returns 0 for named argument patterns,
* so this check is ignored and un-substituted {name} strings
* in a pattern are returned unmodified. */
if(count < umsg_format_arg_count(MSG_FORMAT_OBJECT(mfo))) {
if (count < umsg_format_arg_count(MSG_FORMAT_OBJECT(mfo))) {
/* Not enough aguments for format! */
intl_error_set( INTL_DATA_ERROR_P(mfo), U_ILLEGAL_ARGUMENT_ERROR,
"msgfmt_format: not enough parameters", 0 TSRMLS_CC );
intl_errors_set(INTL_DATA_ERROR_P(mfo), U_ILLEGAL_ARGUMENT_ERROR,
"msgfmt_format: not enough parameters", 0 TSRMLS_CC);
RETVAL_FALSE;
return;
}

View File

@ -117,14 +117,14 @@ static HashTable *umsg_parse_format(const MessagePattern& mp, UErrorCode& uec)
parts_count = mp.countParts();
// See MessageFormat::cacheExplicitFormats()
/*
* Looking through the pattern, go to each arg_start part type.
* The arg-typeof that tells us the argument type (simple, complicated)
* then the next part is either the arg_name or arg number
* and then if it's simple after that there could be a part-type=arg-type
/*
* Looking through the pattern, go to each arg_start part type.
* The arg-typeof that tells us the argument type (simple, complicated)
* then the next part is either the arg_name or arg number
* and then if it's simple after that there could be a part-type=arg-type
* while substring will tell us number, spellout, etc.
* If the next thing isn't an arg-type then assume string.
*/
* If the next thing isn't an arg-type then assume string.
*/
/* The last two "parts" can at most be ARG_LIMIT and MSG_LIMIT
* which we need not examine. */
for (int32_t i = 0; i < parts_count - 2 && U_SUCCESS(uec); i++) {
@ -226,7 +226,7 @@ static HashTable *umsg_parse_format(const MessagePattern& mp, UErrorCode& uec)
}
*storedType = type;
} /* visiting each part */
} /* visiting each part */
if (U_FAILURE(uec)) {
zend_hash_destroy(ret);

View File

@ -40,4 +40,4 @@ int(1)
int(1)
string(81) "intlcal_field_difference: Call to ICU method has failed: U_ILLEGAL_ARGUMENT_ERROR"
string(81) "intlcal_field_difference: Call to ICU method has failed: U_ILLEGAL_ARGUMENT_ERROR"
==DONE==
==DONE==