Bug #75393 [Opn]: Value not preserved when assign-adding an array to an object
| From: | bwoebi@php.net | Date: | Tue, 17 Oct 2017 11:07:06 +0000 |
| Subject: | Bug #75393 [Opn]: Value not preserved when assign-adding an array to an object | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-211755@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=75393&edit=1
ID: 75393
Updated by: bwoebi@php.net
Reported by: bwoebi@php.net
-Summary: Crash when assign-adding an array to an object
+Summary: Value not preserved when assign-adding an array to
an object
Status: Open
Type: Bug
-Package: Reproducible crash
+Package: Scripting Engine problem
Operating System: Irrelevant
PHP Version: 7.0Git-2017-10-16 (Git)
Block user comment: N
Private report: N
New Comment:
Similarly:
php -r 'set_error_handler(function() { throw new \Exception; }); $a = "2"; $a .=
"a"; try { $a+=1; } catch (\Exception $e) { } var_dump($a);'
int(3)
(instead of string(2) "2a")
(turns out the crash has already been fixed in the most recent git, but not yet in the last release.
- renaming thus.)
Previous Comments:
------------------------------------------------------------------------
[2017-10-17 10:36:31] laruence@php.net
of course I also understand why it should be an stdclass instance, it also make sense, but it will
make the codes complex, and this is really a rarely wrong case, so I think choose the easy way is a
good chioce here.
------------------------------------------------------------------------
[2017-10-17 10:34:08] laruence@php.net
why not?
<?php
$o = new Stdclass();
var_dump((int)$o);
output:
PHP Notice: Object of class stdClass could not be converted to int in /tmp/1.php on line 3
int(1)
and for:
$o += []
we preparing operands first, then trying to do add, then result in unsupported operand, which seems
reasonable to me
------------------------------------------------------------------------
[2017-10-17 10:15:32] bwoebi@php.net
@laruence: It doesn't crash with master, yes. But it still does with PHP 7.0 and 7.1.
Also $o must not be int(1), but must be an instanceof stdClass afterwards.
------------------------------------------------------------------------
[2017-10-17 03:53:50] laruence@php.net
this seems already be fixed: https://3v4l.org/oF3Al
------------------------------------------------------------------------
[2017-10-17 03:49:13] laruence@php.net
I can not reproduce this....
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=75393
--
Edit this bug report at https://bugs.php.net/bug.php?id=75393&edit=1