mirror of
https://github.com/php/php-src.git
synced 2024-11-25 10:54:15 +08:00
Set global error if insufficient numeric args. WS.
This commit is contained in:
parent
f1621485ad
commit
407455876e
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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==
|
||||
|
Loading…
Reference in New Issue
Block a user