Annotation of embedaddon/php/tests/lang/bug22510.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Bug #22510 (segfault among complex references)
! 3: --INI--
! 4: error_reporting=E_ALL | E_DEPRECATED
! 5: --FILE--
! 6: <?php
! 7: class foo
! 8: {
! 9: public $list = array();
! 10:
! 11: function finalize() {
! 12: print __CLASS__."::".__FUNCTION__."\n";
! 13: $cl = &$this->list;
! 14: }
! 15:
! 16: function &method1() {
! 17: print __CLASS__."::".__FUNCTION__."\n";
! 18: return @$this->foo;
! 19: }
! 20:
! 21: function &method2() {
! 22: print __CLASS__."::".__FUNCTION__."\n";
! 23: return $this->foo;
! 24: }
! 25:
! 26: function method3() {
! 27: print __CLASS__."::".__FUNCTION__."\n";
! 28: return @$this->foo;
! 29: }
! 30: }
! 31:
! 32: class bar
! 33: {
! 34: function run1() {
! 35: print __CLASS__."::".__FUNCTION__."\n";
! 36: $this->instance = new foo();
! 37: $this->instance->method1($this);
! 38: $this->instance->method1($this);
! 39: }
! 40:
! 41: function run2() {
! 42: print __CLASS__."::".__FUNCTION__."\n";
! 43: $this->instance = new foo();
! 44: $this->instance->method2($this);
! 45: $this->instance->method2($this);
! 46: }
! 47:
! 48: function run3() {
! 49: print __CLASS__."::".__FUNCTION__."\n";
! 50: $this->instance = new foo();
! 51: $this->instance->method3($this);
! 52: $this->instance->method3($this);
! 53: }
! 54: }
! 55:
! 56: function ouch(&$bar) {
! 57: print __FUNCTION__."\n";
! 58: @$a = $a;
! 59: $bar->run1();
! 60: }
! 61:
! 62: function ok1(&$bar) {
! 63: print __FUNCTION__."\n";
! 64: $bar->run1();
! 65: }
! 66:
! 67: function ok2(&$bar) {
! 68: print __FUNCTION__."\n";
! 69: @$a = $a;
! 70: $bar->run2();
! 71: }
! 72:
! 73: function ok3(&$bar) {
! 74: print __FUNCTION__."\n";
! 75: @$a = $a;
! 76: $bar->run3();
! 77: }
! 78:
! 79: $bar = &new bar();
! 80: ok1($bar);
! 81: $bar->instance->finalize();
! 82: print "done!\n";
! 83: ok2($bar);
! 84: $bar->instance->finalize();
! 85: print "done!\n";
! 86: ok3($bar);
! 87: $bar->instance->finalize();
! 88: print "done!\n";
! 89: ouch($bar);
! 90: $bar->instance->finalize();
! 91: print "I'm alive!\n";
! 92: ?>
! 93: --EXPECTF--
! 94: Deprecated: Assigning the return value of new by reference is deprecated in %s on line %d
! 95: ok1
! 96: bar::run1
! 97: foo::method1
! 98:
! 99: Notice: Only variable references should be returned by reference in %s on line %d
! 100: foo::method1
! 101:
! 102: Notice: Only variable references should be returned by reference in %s on line %d
! 103: foo::finalize
! 104: done!
! 105: ok2
! 106: bar::run2
! 107: foo::method2
! 108: foo::method2
! 109: foo::finalize
! 110: done!
! 111: ok3
! 112: bar::run3
! 113: foo::method3
! 114: foo::method3
! 115: foo::finalize
! 116: done!
! 117: ouch
! 118: bar::run1
! 119: foo::method1
! 120:
! 121: Notice: Only variable references should be returned by reference in %s on line %d
! 122: foo::method1
! 123:
! 124: Notice: Only variable references should be returned by reference in %s on line %d
! 125: foo::finalize
! 126: I'm alive!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>