Bug #13968: $this reference is bad during __wakeup

From: Date: Wed, 07 Nov 2001 03:56:04 +0000
Subject: Bug #13968: $this reference is bad during __wakeup
Groups: php.dev 
Request: Send a blank email to php-dev+get-69735@lists.php.net to get a copy of this message
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



Thread (4 messages)

« previous php.dev (#69735) next »