mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Prevent double-construction of NumberFormatter
This commit is contained in:
parent
72eaf509d3
commit
6b554251f7
2 changed files with 16 additions and 0 deletions
|
@ -43,6 +43,10 @@ static int numfmt_ctor(INTERNAL_FUNCTION_PARAMETERS)
|
|||
INTL_CHECK_LOCALE_LEN_OR_FAILURE(locale_len);
|
||||
object = return_value;
|
||||
FORMATTER_METHOD_FETCH_OBJECT_NO_CHECK;
|
||||
if (FORMATTER_OBJECT(nfo)) {
|
||||
zend_throw_error(NULL, "NumberFormatter object is already constructed");
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
/* Convert pattern (if specified) to UTF-16. */
|
||||
if(pattern && pattern_len) {
|
||||
|
|
|
@ -75,6 +75,15 @@ try {
|
|||
}
|
||||
err($fmt);
|
||||
|
||||
$fmt = new NumberFormatter('en_US', NumberFormatter::DECIMAL);
|
||||
try {
|
||||
$fmt->__construct('en_US', NumberFormatter::DECIMAL);
|
||||
} catch (Error $e) {
|
||||
print_exception($e);
|
||||
$fmt = null;
|
||||
}
|
||||
err($fmt);
|
||||
|
||||
foreach($args as $arg) {
|
||||
$fmt = crt("O", $arg[0], $arg[1]);
|
||||
err($fmt);
|
||||
|
@ -95,6 +104,9 @@ ArgumentCountError: numfmt_create() expects at least 2 parameters, 0 given in %s
|
|||
ArgumentCountError: NumberFormatter::create() expects at least 2 parameters, 0 given in %s on line %d
|
||||
'U_ZERO_ERROR'
|
||||
|
||||
Error: NumberFormatter object is already constructed in %s on line %d
|
||||
'U_ZERO_ERROR'
|
||||
|
||||
IntlException: Constructor failed in %s on line %d
|
||||
'numfmt_create: number formatter creation failed: U_UNSUPPORTED_ERROR'
|
||||
'numfmt_create: number formatter creation failed: U_UNSUPPORTED_ERROR'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue