ID: 35277 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Assigned Bug Type: Arrays related Operating System: windows xp sp2 PHP Version: 5.1.0RC6 Assigned To: dmitry New Comment:
The reason of this bug is IS_CV variables. PHP doesn't increment/decrement refcount during fetching, also the order of fetches may be changed. In 5.1 and lvalue of "$a[] = $a" is evaluated before rvalue and changes rvalue (addes new element to array). Then $a is assigned into this element. As a result we got circular data structure where we shouldn't. The same bug occurs with list() Reproduce code: --------------- <?php $b = array("1","2","3"); list($a, $b, $c) = $b; var_dump($a); //should print "1" (not "2") var_dump($b); var_dump($c); $b = array("1","2","3"); list($a, $b[0], $c) = $b; var_dump($a); //should print "1" (not "2") var_dump($b); var_dump($c); ?> Expected result: ---------------- string(1) "1" string(1) "2" string(1) "3" string(1) "1" array(3) { [0]=> string(1) "2" [1]=> string(1) "2" [2]=> string(1) "3" } string(1) "3" Actual result: -------------- string(1) "2" string(1) "2" string(1) "3" string(1) "2" array(3) { [0]=> string(1) "2" [1]=> string(1) "2" [2]=> string(1) "3" } string(1) "3" Previous Comments: ------------------------------------------------------------------------ [2005-11-18 15:55:42] [EMAIL PROTECTED] Dmitry, please take care of it.. ------------------------------------------------------------------------ [2005-11-18 15:39:56] [EMAIL PROTECTED] Description: ------------ PHP 5.1.0 seems to be overly paranoid when trying to detect a recursion. I do not know the internals but I do not think this is a duplicate of http://bugs.php.net/bug.php?id=29389. Reproduce code: --------------- $a = array(); $a[] = $a; var_dump($a); Expected result: ---------------- array(1) { [0]=> array(0) { } } Actual result: -------------- array(1) { [0]=> array(1) { [0]=> *RECURSION* } } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=35277&edit=1