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>