1
0
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:
Christoph M. Becker
2021-10-15 19:13:21 +02:00
8 changed files with 27 additions and 11 deletions
+2 -6
View File
@@ -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)
+1 -1
View File
@@ -43,5 +43,5 @@ object(DateInterval)#%d (16) {
["have_special_relative"]=>
int(0)
["f"]=>
float(-1)
float(0)
}
+1 -1
View File
@@ -43,5 +43,5 @@ object(DateInterval)#%d (16) {
["have_special_relative"]=>
int(0)
["f"]=>
float(-1)
float(0)
}
+1 -1
View File
@@ -28,7 +28,7 @@ object(DateInterval)#%d (16) {
["s"]=>
int(-1)
["f"]=>
float(-1)
float(0)
["weekday"]=>
int(-1)
["weekday_behavior"]=>
+1 -1
View File
@@ -20,7 +20,7 @@ object(DateInterval)#%d (16) {
["s"]=>
int(0)
["f"]=>
float(-1)
float(%f)
["weekday"]=>
int(0)
["weekday_behavior"]=>
+16
View 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)
+1 -1
View File
@@ -40,7 +40,7 @@ array(2) {
["s"]=>
int(-1)
["f"]=>
float(-1)
float(0)
["weekday"]=>
int(-1)
["weekday_behavior"]=>