From: david@php.net
Operating system: Debian Linux
PHP version: 4.0.6
PHP Bug Type: Scripting Engine problem
Bug description: $this reference is bad during __wakeup
References to $this are randomly wrong during __wakeup.
I am keeping track of all objects in a global $objs.
global $objs;
$objs[] =& $this;
during __wakeup causes $objs[] to gain an element that matches some random
OTHER variable in my script (an integer I was using somewhere, or an array
I had somewhere else)
Unforunately I cannot reproduce this on a simple script, but here is the
essence of what I am doing:
<?
$objs = array();
class O {
function __wakeup() {
global $objs;
$objs[] =& $this;
}
}
class X extends O {
var $a = 213;
var $b = 'hello';
}
$x = new X();
$y = serialize($x);
$z = unserialize($y);
var_dump($objs);
?>
^^ the above script works perfectly, but in a more complex script doing the
same thing, it ends up putting a reference to a totally different variable
into $objs.
--
Edit bug report at: http://bugs.php.net/?id=13968&edit=1