ID: 28892 User updated by: paranoid at pcwereld dot be Reported By: paranoid at pcwereld dot be Status: Open Bug Type: Zend Engine 2 problem Operating System: Windows 2k PHP Version: 5.0.0RC3 New Comment:
When using new C($a = new A()) instead of new C(new A()) the code seems to work like expected. Previous Comments: ------------------------------------------------------------------------ [2004-06-23 12:59:04] paranoid at pcwereld dot be Description: ------------ PHP reassigns an allready-in-use object id to a newly created object, after the first object (that loses it's id) was removed from an array, but was still referenced in another object. Reproduce code: --------------- http://users.pandora.be/paranet/poc.html Expected result: ---------------- I expected that object C would still contain a reference to the first A object (A-1) i created, ... Actual result: -------------- (see comments in code for the actual output) ... instead A-1 was overwritten with a second A object (A-2) i created, that (!!!!!) used the same object id as the first A object. PHP seems to be missing the fact that A-1 is still referenced inside the C object, and thus assigns the object id A-1 was using to A-2 Removing the part marked "important" in list_remove results in a normal behaviour, eg. C refers to A-1, not A-2. And A-2 doesn't get the same object id as A-1. The bug is probably somewhere in the code that removes an object from an array. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28892&edit=1
