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 >> /php-7.1.11/Zend/tests/ |
files >> //php-7.1.11/Zend/tests/object_handlers.phpt |
--TEST-- Magic object handlers segfaults and memory errors --FILE-- <?php function f($x) { return $x; } class foo implements ArrayAccess { function __get($property) { $GLOBALS["y"] = $property; } function __set($property, $value) { $GLOBALS["y"] = $property; } function __call($func, $args) { $GLOBALS["y"] = $func; } static function __callStatic($func, $args) { $GLOBALS["y"] = $func; } function offsetGet($index) { $GLOBALS["y"] = $index; } function offsetSet($index, $newval) { $GLOBALS["y"] = $index; } function offsetExists($index) { $GLOBALS["y"] = $index; } function offsetUnset($index) { $GLOBALS["y"] = $index; } } $x = new foo(); $y = null; // IS_CONST $z = $x->const_get; echo $y,"\n"; $x->const_set = 1; echo $y,"\n"; $x->const_call(); echo $y,"\n"; foo::const_callstatic(); echo $y,"\n"; $z = $x["const_dim_get"]; echo $y,"\n"; $x["const_dim_set"] = 1; echo $y,"\n"; isset($x["const_dim_isset"]); echo $y,"\n"; unset($x["const_dim_unset"]); echo $y,"\n"; // IS_CONST + conversion $z = $x->{1}; echo $y,"\n"; $x->{2} = 1; echo $y,"\n"; // IS_TMP_VAR $c = "tmp"; $z = $x->{$c."_get"}; echo $y,"\n"; $x->{$c."_set"} = 1; echo $y,"\n"; $x->{$c."_call"}(); echo $y,"\n"; $z = $x[$c."_dim_get"]; echo $y,"\n"; $x[$c."_dim_set"] = 1; echo $y,"\n"; isset($x[$c."_dim_isset"]); echo $y,"\n"; unset($x[$c."_dim_unset"]); echo $y,"\n"; // IS_TMP_VAR + conversion $c = 0; $z = $x->{$c+3}; echo $y,"\n"; $x->{$c+4} = 1; echo $y,"\n"; // IS_CV $c = "cv_get"; $z = $x->{$c}; echo $y,"\n"; $c = "cv_set"; $x->{$c} = 1; echo $y,"\n"; $c = "cv_call"; $x->{$c}(); echo $y,"\n"; $c = "cv_dim_get"; $z = $x[$c]; echo $y,"\n"; $c = "cv_dim_set"; $x[$c] = 1; echo $y,"\n"; $c = "cv_dim_isset"; isset($x[$c]); echo $y,"\n"; $c = "cv_dim_unset"; unset($x[$c]); echo $y,"\n"; // IS_CV + conversion $c = 5; $z = $x->{$c}; echo $y,"\n"; $c = 6; $x->{$c} = 1; echo $y,"\n"; // IS_VAR $z = $x->{f("var_get")}; echo $y,"\n"; $x->{f("var_set")} = 1; echo $y,"\n"; $x->{f("var_call")}(); echo $y,"\n"; $z = $x[f("var_dim_get")]; echo $y,"\n"; $x[f("var_dim_set")] = 1; echo $y,"\n"; isset($x[f("var_dim_isset")]); echo $y,"\n"; unset($x[f("var_dim_unset")]); echo $y,"\n"; // IS_VAR + conversion $z = $x->{f(7)}; echo $y,"\n"; $x->{f(8)} = 1; echo $y,"\n"; ?> --EXPECT-- const_get const_set const_call const_callstatic const_dim_get const_dim_set const_dim_isset const_dim_unset 1 2 tmp_get tmp_set tmp_call tmp_dim_get tmp_dim_set tmp_dim_isset tmp_dim_unset 3 4 cv_get cv_set cv_call cv_dim_get cv_dim_set cv_dim_isset cv_dim_unset 5 6 var_get var_set var_call var_dim_get var_dim_set var_dim_isset var_dim_unset 7 8y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`