php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay
files >> /var/www/html/sub/images/Rm19_symconf/root/php-7.1.11/Zend/tests/ |
files >> /var/www/html/sub/images/Rm19_symconf/root/php-7.1.11/Zend/tests/bug40833.phpt |
--TEST-- Bug #40833 (Crash when using unset() on an ArrayAccess object retrieved via __get) --FILE-- <?php class entity { private $data; private $modified; function __get($name) { if ( isset($this->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 oky~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`