mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Merge branch 'PHP-8.0' into PHP-8.1
* PHP-8.0: Fix #81500: Interval serialization regression since 7.3.14 / 7.4.2
This commit is contained in:
commit
2e65c8e581
8 changed files with 27 additions and 11 deletions
4
NEWS
4
NEWS
|
@ -6,6 +6,10 @@ PHP NEWS
|
|||
. Fixed bug #81518 (Header injection via default_mimetype / default_charset).
|
||||
(cmb)
|
||||
|
||||
- Date:
|
||||
. Fixed bug #81500 (Interval serialization regression since 7.3.14 / 7.4.2).
|
||||
(cmb)
|
||||
|
||||
14 Oct 2021, PHP 8.1.0RC4
|
||||
|
||||
- CLI:
|
||||
|
|
|
@ -3850,7 +3850,7 @@ static zval *date_interval_write_property(zend_object *object, zend_string *name
|
|||
SET_VALUE_FROM_STRUCT(i, "i");
|
||||
SET_VALUE_FROM_STRUCT(s, "s");
|
||||
if (zend_string_equals_literal(name, "f")) {
|
||||
obj->diff->us = zval_get_double(value) * 1000000;
|
||||
obj->diff->us = zend_dval_to_lval(zval_get_double(value) * 1000000.0);
|
||||
break;
|
||||
}
|
||||
SET_VALUE_FROM_STRUCT(invert, "invert");
|
||||
|
@ -3968,12 +3968,8 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter
|
|||
PHP_DATE_INTERVAL_READ_PROPERTY("s", s, timelib_sll, -1)
|
||||
{
|
||||
zval *z_arg = zend_hash_str_find(myht, "f", sizeof("f") - 1);
|
||||
(*intobj)->diff->us = -1000000;
|
||||
if (z_arg) {
|
||||
double val = zval_get_double(z_arg) * 1000000;
|
||||
if (val >= 0 && val < 1000000) {
|
||||
(*intobj)->diff->us = val;
|
||||
}
|
||||
(*intobj)->diff->us = zend_dval_to_lval(zval_get_double(z_arg) * 1000000.0);
|
||||
}
|
||||
}
|
||||
PHP_DATE_INTERVAL_READ_PROPERTY("weekday", weekday, int, -1)
|
||||
|
|
|
@ -43,5 +43,5 @@ object(DateInterval)#%d (16) {
|
|||
["have_special_relative"]=>
|
||||
int(0)
|
||||
["f"]=>
|
||||
float(-1)
|
||||
float(0)
|
||||
}
|
||||
|
|
|
@ -43,5 +43,5 @@ object(DateInterval)#%d (16) {
|
|||
["have_special_relative"]=>
|
||||
int(0)
|
||||
["f"]=>
|
||||
float(-1)
|
||||
float(0)
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ object(DateInterval)#%d (16) {
|
|||
["s"]=>
|
||||
int(-1)
|
||||
["f"]=>
|
||||
float(-1)
|
||||
float(0)
|
||||
["weekday"]=>
|
||||
int(-1)
|
||||
["weekday_behavior"]=>
|
||||
|
|
|
@ -20,7 +20,7 @@ object(DateInterval)#%d (16) {
|
|||
["s"]=>
|
||||
int(0)
|
||||
["f"]=>
|
||||
float(-1)
|
||||
float(%f)
|
||||
["weekday"]=>
|
||||
int(0)
|
||||
["weekday_behavior"]=>
|
||||
|
|
16
ext/date/tests/bug81500.phpt
Normal file
16
ext/date/tests/bug81500.phpt
Normal file
|
@ -0,0 +1,16 @@
|
|||
--TEST--
|
||||
Bug #81500 (Interval serialization regression since 7.3.14 / 7.4.2)
|
||||
--FILE--
|
||||
<?php
|
||||
$interval = new DateInterval('PT1S');
|
||||
$interval->f = -0.000001;
|
||||
var_dump($interval->s, $interval->f);
|
||||
|
||||
$interval = unserialize(serialize($interval));
|
||||
var_dump($interval->s, $interval->f);
|
||||
?>
|
||||
--EXPECT--
|
||||
int(1)
|
||||
float(-1.0E-6)
|
||||
int(1)
|
||||
float(-1.0E-6)
|
|
@ -40,7 +40,7 @@ array(2) {
|
|||
["s"]=>
|
||||
int(-1)
|
||||
["f"]=>
|
||||
float(-1)
|
||||
float(0)
|
||||
["weekday"]=>
|
||||
int(-1)
|
||||
["weekday_behavior"]=>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue