Bug #14582 Updated: initializing with NULL reference
| From: | mfischer@php.net | Date: | Tue, 18 Dec 2001 16:21:31 +0000 |
| Subject: | Bug #14582 Updated: initializing with NULL reference | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-74266@lists.php.net to get a copy of this message | ||
ID: 14582
Updated by: mfischer
Reported By: zork@clan.pl
Status: Open
Bug Type: Scripting Engine problem
Operating System: slackware linux 8.0
PHP Version: 4.1.0
New Comment:
Seems we've a leak here:
$ php -f 14582.php
NULL
object(cinput_select)(3) {
["values"]=>
array(0) {
}
["name"]=>
&array(0) {
}
["options"]=>
&array(0) {
}
}
./zend_execute.c(425) : Freeing 0x082FC964 (2 bytes), script=14582.php
zend_variables.c(107) : Actual location (location was relayed)
I remember seeing another BR leeking at the same place when trying to access arrays with constants
but can't find it right now.
Previous Comments:
------------------------------------------------------------------------
[2001-12-18 11:11:07] zork@clan.pl
I've encountered stack problem. Here is simplest code, that reproduces this:
<?php
class CForm {
var $inputs;
function Cform() {
$this -> inputs = array();
}
function &get_input($name) {
return($this -> inputs[$name]);
}
};
class Cinput_select {
var $values;
var $name;
function Cinput_select($t) {
$this -> name = $t;
$this -> options = array();
}
function add_value($value) {
$this -> values[] = $value;
}
};
$form = new CForm();
//coment next two lines and new returns NULL
$sel = new CInput_select("b");
$sel -> add_value("a");
$a =& $form -> get_input("a");
var_dump($a);
$sel = new CInput_select("test");
var_dump($sel);
$sel -> add_value("a");
?>
After call to CForm::get_input() $a is not a registered variable. Later new returns corrupted
structure.
If you comment out first two lines of program new returns NULL.
In my original source code even when I created object using diffrient name after assigning NULL
reference to variable new still corupts some of my variables. I think its becouse $a doesn't
have storage on stack but interpreter thinks that it has.
I think that returning NULL reference should initialize variable to false. This is code is not good
programming pracitce and could be easily ommited, but taht doesn't change the fact that this is
a bug.
regards
Lukasz Michalski
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=14582&edit=1