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,
|
/* umsg_format_arg_count() always returns 0 for named argument patterns,
|
||||||
* so this check is ignored and un-substituted {name} strings
|
* so this check is ignored and un-substituted {name} strings
|
||||||
* in a pattern are returned unmodified. */
|
* 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! */
|
/* Not enough aguments for format! */
|
||||||
intl_error_set( INTL_DATA_ERROR_P(mfo), U_ILLEGAL_ARGUMENT_ERROR,
|
intl_errors_set(INTL_DATA_ERROR_P(mfo), U_ILLEGAL_ARGUMENT_ERROR,
|
||||||
"msgfmt_format: not enough parameters", 0 TSRMLS_CC );
|
"msgfmt_format: not enough parameters", 0 TSRMLS_CC);
|
||||||
RETVAL_FALSE;
|
RETVAL_FALSE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -117,14 +117,14 @@ static HashTable *umsg_parse_format(const MessagePattern& mp, UErrorCode& uec)
|
|||||||
parts_count = mp.countParts();
|
parts_count = mp.countParts();
|
||||||
|
|
||||||
// See MessageFormat::cacheExplicitFormats()
|
// See MessageFormat::cacheExplicitFormats()
|
||||||
/*
|
/*
|
||||||
* Looking through the pattern, go to each arg_start part type.
|
* Looking through the pattern, go to each arg_start part type.
|
||||||
* The arg-typeof that tells us the argument type (simple, complicated)
|
* The arg-typeof that tells us the argument type (simple, complicated)
|
||||||
* then the next part is either the arg_name or arg number
|
* 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
|
* and then if it's simple after that there could be a part-type=arg-type
|
||||||
* while substring will tell us number, spellout, etc.
|
* 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
|
/* The last two "parts" can at most be ARG_LIMIT and MSG_LIMIT
|
||||||
* which we need not examine. */
|
* which we need not examine. */
|
||||||
for (int32_t i = 0; i < parts_count - 2 && U_SUCCESS(uec); i++) {
|
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;
|
*storedType = type;
|
||||||
} /* visiting each part */
|
} /* visiting each part */
|
||||||
|
|
||||||
if (U_FAILURE(uec)) {
|
if (U_FAILURE(uec)) {
|
||||||
zend_hash_destroy(ret);
|
zend_hash_destroy(ret);
|
||||||
|
@ -40,4 +40,4 @@ int(1)
|
|||||||
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"
|
||||||
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