Bug #81500 [Com]: Interval serialization regression since 7.3.14 / 7.4.2
| From: | alec at alec dot pl | Date: | Fri, 15 Oct 2021 11:49:49 +0000 |
| Subject: | Bug #81500 [Com]: Interval serialization regression since 7.3.14 / 7.4.2 | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-237211@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=81500&edit=1
ID: 81500
Comment by: alec at alec dot pl
Reported by: kylekatarnls at gmail dot com
Summary: Interval serialization regression since 7.3.14 /
7.4.2
Status: Assigned
Type: Bug
Package: Date/time related
PHP Version: 8.0.11
Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
My two cents. I see two issues here:
1. The type is int, but should be float.
2. If it's supposed to not accept negative numbers (which I agree), then I'd expect it to
be converted to 0 not -1.
Former is an obvious bug, but for the latter I'm not sure. What's a usual PHP behavior is
such cases.
Previous Comments:
------------------------------------------------------------------------
[2021-10-13 10:47:36] cmb@php.net
The following pull request has been associated:
Patch Name: Fix #81500: Interval serialization regression since 7.3.14 / 7.4.2
On GitHub: https://github.com/php/php-src/pull/7575
Patch: https://github.com/php/php-src/pull/7575.patch
------------------------------------------------------------------------
[2021-10-12 09:37:07] cmb@php.net
The following pull request has been associated:
Patch Name: Fix #81500: Interval serialization regression since 7.3.14 / 7.4.2
On GitHub: https://github.com/php/php-src/pull/7572
Patch: https://github.com/php/php-src/pull/7572.patch
------------------------------------------------------------------------
[2021-10-12 09:36:44] cmb@php.net
Well, actually the *un*serialization is correct, because negative
values of DateInterval::$f are not supposed to be supported.
------------------------------------------------------------------------
[2021-10-06 08:24:15] cmb@php.net
That's caused by the fix for bug #79015.
------------------------------------------------------------------------
[2021-10-04 11:28:53] kylekatarnls at gmail dot com
Description:
------------
When DateInterval f property = -0.000001, it's properly restored as float(-1.0E-6) after
unserialize(serialize()) until PHP 7.3.13 / 7.4.1 but since 7.3.14 / 7.4.2 and all >= 8, it
becomes int(-1)
See https://3v4l.org/t5N4d
Test script:
---------------
$interval = new DateInterval('PT1S');
$interval->f = -0.000001;
var_dump($interval->s, $interval->f);
echo "\n";
$interval = unserialize(serialize($interval));
var_dump($interval->s, $interval->f);
Expected result:
----------------
int(1)
float(-1.0E-6)
int(1)
float(-1.0E-6)
Actual result:
--------------
int(1)
float(-1.0E-6)
int(1)
int(-1)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=81500&edit=1