Annotation of embedaddon/php/Zend/tests/bug52614.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Bug #52614 (Memory leak when writing on uninitialized variable returned from method call)
                      3: --FILE--
                      4: <?php
                      5: class foo {
                      6:        public $a1;
                      7:        public $a2 = array();
                      8:        public $a3;
                      9:        public $o1;
                     10:        public $o2;
                     11:        
                     12:        public function f1() {
                     13:                return $this->a1;
                     14:        }
                     15: 
                     16:        public function f2() {
                     17:                return $this->a2;
                     18:        }
                     19: 
                     20:        public function f3() {
                     21:                $this->a3 = array();
                     22:                return $this->a3;
                     23:        }
                     24: 
                     25:        public function f4() {
                     26:                return $this->o1;
                     27:        }
                     28: 
                     29:        public function f5() {
                     30:                $this->o2 = new stdClass;
                     31:                return $this->o2;
                     32:        }
                     33: 
                     34:        public function &f6() {
                     35:                return $this->a1;
                     36:        }
                     37: 
                     38:        public function f7(&$x) {
                     39:                $x = 2;
                     40:        }
                     41: 
                     42: }
                     43: 
                     44: $foo = new foo;
                     45: 
                     46: $foo->f1()[0] = 1;
                     47: var_dump($foo->a1);
                     48: 
                     49: $foo->f2()[0] = 1;
                     50: var_dump($foo->a2);
                     51: 
                     52: $foo->f3()[0] = 1;
                     53: var_dump($foo->a3);
                     54: 
                     55: $foo->f4()->a = 1;
                     56: var_dump($foo->o1);
                     57: 
                     58: $foo->f5()->a = 1;
                     59: var_dump($foo->o2);
                     60: 
                     61: $foo->a1[0] = 1;
                     62: $foo->f7($foo->f6()[0]);
                     63: var_dump($foo->a1[0]);
                     64: $foo->f1()[0]++;
                     65: var_dump($foo->a1[0]);
                     66: $foo->f6()[0]++;
                     67: var_dump($foo->a1[0]);
                     68: --EXPECTF--
                     69: NULL
                     70: array(0) {
                     71: }
                     72: array(0) {
                     73: }
                     74: 
                     75: Warning: Creating default object from empty value in %sbug52614.php on line 52
                     76: NULL
                     77: object(stdClass)#%d (1) {
                     78:   ["a"]=>
                     79:   int(1)
                     80: }
                     81: int(2)
                     82: int(2)
                     83: int(3)

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>