mirror of
https://github.com/php/php-src.git
synced 2026-04-22 15:38:49 +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:
+2
-6
@@ -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"]=>
|
||||
|
||||
@@ -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"]=>
|
||||
|
||||
Reference in New Issue
Block a user