1--TEST-- 2Bug #52614 (Memory leak when writing on uninitialized variable returned from method call) 3--FILE-- 4<?php 5class 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; 47var_dump($foo->a1); 48 49$foo->f2()[0] = 1; 50var_dump($foo->a2); 51 52$foo->f3()[0] = 1; 53var_dump($foo->a3); 54 55$foo->f4()->a = 1; 56var_dump($foo->o1); 57 58$foo->f5()->a = 1; 59var_dump($foo->o2); 60 61$foo->a1[0] = 1; 62$foo->f7($foo->f6()[0]); 63var_dump($foo->a1[0]); 64$foo->f1()[0]++; 65var_dump($foo->a1[0]); 66$foo->f6()[0]++; 67var_dump($foo->a1[0]); 68--EXPECTF-- 69NULL 70array(0) { 71} 72array(0) { 73} 74 75Warning: Creating default object from empty value in %sbug52614.php on line 52 76NULL 77object(stdClass)#%d (1) { 78 ["a"]=> 79 int(1) 80} 81int(2) 82int(2) 83int(3) 84