--TEST-- Bug #40833 (Crash when using unset() on an ArrayAccess object retrieved via __get) --FILE-- data[$name]) ) return $this->data[$name]; else return $this->data[$name] = new set($this); } function __set($name, $value) { $this->modified[$name] = $value; } } class set implements ArrayAccess { private $entity; function __construct($entity) { $this->entity = $entity; $this->entity->whatever = $this; } function clear() { $this->entity->whatever = null; } function offsetUnset($offset) { $this->clear(); // $this->entity->{$this->name} = null; } function offsetSet($offset, $value) { } function offsetGet($offset) { return 'Bogus '; } function offsetExists($offset) { } } $entity = new entity(); echo($entity->whatever[0]); //This will crash // $entity->whatever->clear(); unset($entity->whatever[0]); //This will not crash (comment previous & uncomment this to test // $test = $entity->whatever; unset($test[0]); echo($entity->whatever[0]); echo "ok\n"; ?> --EXPECT-- Bogus Bogus ok