|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2005-11-16 13:28 UTC] dmitry@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 02 22:00:01 2025 UTC |
Description: ------------ Assignment by reference to property may lose reference. Reproduce code: --------------- <?php $a = new stdClass; $a->x0 = new stdClass; $a->x0->y0 = 'a'; $a->x0->y1 =& $a->x0; $a->x0->y2 =& $a->x0; $a->x0->y0 = 'b'; var_dump($a); ?> Expected result: ---------------- object(stdClass)#1 (1) { ["x0"]=> &object(stdClass)#2 (3) { ["y0"]=> string(1) "b" ["y1"]=> &object(stdClass)#2 (3) { ["y0"]=> string(1) "b" ["y1"]=> *RECURSION* ["y2"]=> *RECURSION* } ["y2"]=> &object(stdClass)#2 (3) { ["y0"]=> string(1) "b" ["y1"]=> *RECURSION* ["y2"]=> *RECURSION* } } } Actual result: -------------- object(stdClass)#1 (1) { ["x0"]=> object(stdClass)#2 (3) { ["y0"]=> string(1) "b" ["y1"]=> object(stdClass)#2 (3) { ["y0"]=> string(1) "b" ["y1"]=> *RECURSION* ["y2"]=> *RECURSION* } ["y2"]=> object(stdClass)#2 (3) { ["y0"]=> string(1) "b" ["y1"]=> *RECURSION* ["y2"]=> *RECURSION* } } } /home/dmitry/php/php5.1/Zend/zend_vm_execute.h(393) : Freeing 0x08B29C94 (16 bytes), script=ass4.php === Total 1 memory leaks detected ===