mirror of
https://github.com/php/php-src.git
synced 2024-09-22 18:37:25 +00:00
Merge branch 'PHP-5.4'
* PHP-5.4: Bug#59597 NumberFormatter::parse() with TYPE_INT64 results in a 32 bit integer
This commit is contained in:
commit
71884b7024
@ -83,11 +83,10 @@ PHP_FUNCTION( numfmt_parse )
|
||||
break;
|
||||
case FORMAT_TYPE_INT64:
|
||||
val64 = unum_parseInt64(FORMATTER_OBJECT(nfo), sstr, sstr_len, position_p, &INTL_DATA_ERROR_CODE(nfo));
|
||||
if(val64 > LONG_MAX || val64 < -LONG_MAX) {
|
||||
if(val64 > LONG_MAX || val64 < LONG_MIN) {
|
||||
RETVAL_DOUBLE(val64);
|
||||
} else {
|
||||
val32 = (int32_t)val64;
|
||||
RETVAL_LONG(val32);
|
||||
RETVAL_LONG((long)val64);
|
||||
}
|
||||
break;
|
||||
case FORMAT_TYPE_DOUBLE:
|
||||
|
21
ext/intl/tests/bug59597_32.phpt
Normal file
21
ext/intl/tests/bug59597_32.phpt
Normal file
@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug#59597 NumberFormatter::parse() with TYPE_INT64 results in a 32 bit integer
|
||||
--SKIPIF--
|
||||
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
|
||||
<?php echo PHP_INT_SIZE == 8 ? "skip 32-bit only" : "OK"; ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$formatter = new \NumberFormatter('en', \NumberFormatter::DECIMAL);
|
||||
$value = $formatter->parse('2147483647', \NumberFormatter::TYPE_INT32);
|
||||
var_dump($value);
|
||||
|
||||
$formatter = new \NumberFormatter('en', \NumberFormatter::DECIMAL);
|
||||
$value = $formatter->parse('2147483650', \NumberFormatter::TYPE_INT64);
|
||||
var_dump($value);
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
int(2147483647)
|
||||
float(2147483650)
|
||||
|
21
ext/intl/tests/bug59597_64.phpt
Normal file
21
ext/intl/tests/bug59597_64.phpt
Normal file
@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug#59597 NumberFormatter::parse() with TYPE_INT64 results in a 32 bit integer
|
||||
--SKIPIF--
|
||||
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
|
||||
<?php echo PHP_INT_SIZE != 8 ? "skip 64-bit only" : "OK"; ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$formatter = new \NumberFormatter('en', \NumberFormatter::DECIMAL);
|
||||
$value = $formatter->parse('2147483647', \NumberFormatter::TYPE_INT32);
|
||||
var_dump($value);
|
||||
|
||||
$formatter = new \NumberFormatter('en', \NumberFormatter::DECIMAL);
|
||||
$value = $formatter->parse('2147483650', \NumberFormatter::TYPE_INT64);
|
||||
var_dump($value);
|
||||
|
||||
?>
|
||||
--EXPECTREGEX--
|
||||
int(2147483647)
|
||||
int(2147483650)
|
||||
|
Loading…
Reference in New Issue
Block a user