#27381 [Fbk->Csd]: unset affects "copies" of an array
ID: 27381
Updated by: sniper@php.net
Reported By: abk at avatartechnology dot com
-Status: Feedback
+Status: Closed
Bug Type: Arrays related
Operating System: Win 2K pro
PHP Version: 4.3.4
New Comment:
This was already fixed some time ago.
Previous Comments:
------------------------------------------------------------------------
[2004-02-26 00:38:02] postings-php-bug at hans-spath dot de
I can't reproduce this under Windows XP (CLI) or Linux (Apache2
module). Version 4.3.4.
------------------------------------------------------------------------
[2004-02-24 14:26:34] derick@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
Works fine for me...
------------------------------------------------------------------------
[2004-02-24 13:25:56] abk at avatartechnology dot com
Description:
------------
Unsetting an element of an array unsets that element in copies of the
array. This does not happen if you change the array or its copy in some
other way after making the copy and before doing the unset. I haven't
tested whether this affects other non-atomic types like objects, but it
wouldn't surprise me if it does.
My educated guess is there is some copy-on-write optomization that
(wrongly) does not consider "unset" to be a write.
Reproduce code:
---------------
$x = array(1,2);
$y = $x;
# uncommenting the next line "fixes" the bug:
#$x[0] = $x[0];
unset($x[0]);
print_r($y);
Expected result:
----------------
Array(0=>1,1=>2)
Actual result:
--------------
Array(1=>2)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=27381&edit=1
Thread (4 messages)