moriyoshi Tue Mar 4 14:52:48 2003 EDT
Added files: (Branch: PHP_4_3)
/php4/tests/lang bug22510.phpt
Log:
MFH: Added a test case for bug #22510
Index: php4/tests/lang/bug22510.phpt
+++ php4/tests/lang/bug22510.phpt
--TEST--
Bug #22510 (segfault among complex references)
--FILE--
<?php
class foo
{
var $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();
}
$bar = &new bar();
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";
?>
--EXPECT--
ok1
bar::run1
foo::method1
foo::method1
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
foo::method1
foo::finalize
I'm alive!
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php