ID: 33931 Updated by: [EMAIL PROTECTED] Reported By: wkonkel at gmail dot com -Status: Assigned +Status: Feedback Bug Type: Scripting Engine problem Operating System: * PHP Version: 5CVS-2005-08-19 Assigned To: dmitry New Comment:
Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip I'm unable to replicate it anymore. Previous Comments: ------------------------------------------------------------------------ [2005-08-01 09:51:38] [EMAIL PROTECTED] Dmitry, could you check it plz ? ------------------------------------------------------------------------ [2005-07-31 20:01:33] [EMAIL PROTECTED] And this with Sean's code: PHP Notice: Undefined property: A::$foo in /home/jani/t.php on line 8 Notice: Undefined property: A::$foo in /home/jani/t.php on line 8 PHP Notice: Undefined property: A::$foo in /home/jani/t.php on line 9 Notice: Undefined property: A::$foo in /home/jani/t.php on line 9 PHP Notice: Undefined variable: undefined in /home/jani/t.php on line 10 Notice: Undefined variable: undefined in /home/jani/t.php on line 10 NULL array(2) { ["bar1"]=> string(5) "oink1" [0]=> string(4) "blah" } /usr/src/php/php5/Zend/zend_variables.h(45) : Freeing 0x088ED84C (6 bytes), script=t.php /usr/src/php/php5/Zend/zend_variables.c(120) : Actual location (location was relayed) Last leak repeated 1 time /usr/src/php/php5/Zend/zend_execute.c(798) : Freeing 0x088ED80C (16 bytes), script=t.php Last leak repeated 1 time /usr/src/php/php5/Zend/zend_hash.c(242) : Freeing 0x088ED7B4 (40 bytes), script=t.php Last leak repeated 1 time /usr/src/php/php5/Zend/zend_execute.c(1031) : Freeing 0x088ED754 (44 bytes), script=t.php /usr/src/php/php5/Zend/zend_API.c(712) : Actual location (location was relayed) Last leak repeated 3 times /usr/src/php/php5/Zend/zend_execute.c(1028) : Freeing 0x088DE7CC (16 bytes), script=t.php === Total 11 memory leaks detected === ------------------------------------------------------------------------ [2005-07-31 20:00:32] [EMAIL PROTECTED] Output with CVS HEAD: Array ( [foo2] => bar2 [foo3] => bar3 [0] => blah ) /usr/src/php/php5/Zend/zend_hash.c(242) : Freeing 0x088EF6FC (40 bytes), script=t.php Last leak repeated 2 times /usr/src/php/php5/Zend/zend_variables.h(45) : Freeing 0x088EF664 (5 bytes), script=t.php /usr/src/php/php5/Zend/zend_variables.c(120) : Actual location (location was relayed) Last leak repeated 2 times /usr/src/php/php5/Zend/zend_execute.c(798) : Freeing 0x088EF624 (16 bytes), script=t.php Last leak repeated 2 times /usr/src/php/php5/Zend/zend_execute.c(1031) : Freeing 0x088EF56C (44 bytes), script=t.php /usr/src/php/php5/Zend/zend_API.c(712) : Actual location (location was relayed) Last leak repeated 3 times /usr/src/php/php5/Zend/zend_execute.c(1028) : Freeing 0x088DE7CC (16 bytes), script=t.php === Total 14 memory leaks detected === ------------------------------------------------------------------------ [2005-07-30 23:52:13] [EMAIL PROTECTED] Happens to me on 5.0.3 as well. Shorter code: <?php class A { public function __set($key, $val) { $this->data[$key] = $val; } } $A = new A(); $A->foo['bar'] = 'oink'; $A->foo['bar1'] = 'oink1'; var_dump($undefined); $undefined[] = 'blah'; var_dump($undefined); ?> Outputs: NULL array(2) { ["bar1"]=> string(5) "oink1" [0]=> string(4) "blah" } ------------------------------------------------------------------------ [2005-07-30 22:39:55] wkonkel at gmail dot com Description: ------------ The __set and __get don't seem to handle arrays correctly. What's even worse, is it adds data to memory which is allocated at a later time ($boz gets foo2 and foo3 of $myObj). The code example speaks for itself. Reproduce code: --------------- <? class buggy { private $data; function __set($key, $val) { $this->data[$key] = $val; } function __get($key) { return $this->data[$key]; } } $myObj = new buggy(); $myObj->somevar['foo1'] = 'bar1'; $myObj->somevar['foo2'] = 'bar2'; $myObj->somevar['foo3'] = 'bar3'; $boz[] = 'blah'; print_r($boz); ?> Expected result: ---------------- Array ( [0] => blah ) Actual result: -------------- Array ( [foo2] => bar2 [foo3] => bar3 [0] => blah ) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=33931&edit=1