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/proc/self/root/php-7.1.11/tests/lang/ |
| files >> //var/www/html/sub/images/Rm19_symconf/root/proc/self/root/php-7.1.11/tests/lang/bug22510.phpt |
--TEST--
Bug #22510 (segfault among complex references)
--INI--
error_reporting=E_ALL | E_DEPRECATED
--FILE--
<?php
class foo
{
public $list = array();
function finalize() {
print __CLASS__."::".__FUNCTION__."\n";
$cl = &$this->list;
}
function &method1() {
print __CLASS__."::".__FUNCTION__."\n";
return @$this->foo;
}
function &method2() {
print __CLASS__."::".__FUNCTION__."\n";
return $this->foo;
}
function method3() {
print __CLASS__."::".__FUNCTION__."\n";
return @$this->foo;
}
}
class bar
{
function run1() {
print __CLASS__."::".__FUNCTION__."\n";
$this->instance = new foo();
$this->instance->method1($this);
$this->instance->method1($this);
}
function run2() {
print __CLASS__."::".__FUNCTION__."\n";
$this->instance = new foo();
$this->instance->method2($this);
$this->instance->method2($this);
}
function run3() {
print __CLASS__."::".__FUNCTION__."\n";
$this->instance = new foo();
$this->instance->method3($this);
$this->instance->method3($this);
}
}
function ouch(&$bar) {
print __FUNCTION__."\n";
@$a = $a;
$bar->run1();
}
function ok1(&$bar) {
print __FUNCTION__."\n";
$bar->run1();
}
function ok2(&$bar) {
print __FUNCTION__."\n";
@$a = $a;
$bar->run2();
}
function ok3(&$bar) {
print __FUNCTION__."\n";
@$a = $a;
$bar->run3();
}
$foo = new bar();
$bar =& $foo;
ok1($bar);
$bar->instance->finalize();
print "done!\n";
ok2($bar);
$bar->instance->finalize();
print "done!\n";
ok3($bar);
$bar->instance->finalize();
print "done!\n";
ouch($bar);
$bar->instance->finalize();
print "I'm alive!\n";
?>
--EXPECTF--
ok1
bar::run1
foo::method1
Notice: Only variable references should be returned by reference in %s on line %d
foo::method1
Notice: Only variable references should be returned by reference in %s on line %d
foo::finalize
done!
ok2
bar::run2
foo::method2
foo::method2
foo::finalize
done!
ok3
bar::run3
foo::method3
foo::method3
foo::finalize
done!
ouch
bar::run1
foo::method1
Notice: Only variable references should be returned by reference in %s on line %d
foo::method1
Notice: Only variable references should be returned by reference in %s on line %d
foo::finalize
I'm alive!
y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`