ID: 12935
Updated by: yohgaki
Reported By: [EMAIL PROTECTED]
Old Status: Open
Status: Closed
Bug Type: Scripting Engine problem
Operating System: linux 2.2.14-5.0
PHP Version: 4.0.6
New Comment:
I'm not sure what is expected with your script. Just taking look at code quickly, you
haven't change any value in your script.
function AddInfo(&$st, $in)
{
$parent = FindStateItem($st, $in['itemid']);
$parent['folder'][] = $in;
}
$parent is in local scope. Therefore, print_r($state) will not display changes made in
AddInfo().
AddInfo($state, $info);
print_r($state);
Did PHP4.0.6 crash or leak memory with this script? I don't see any problem with
4.2.0-dev.
I closed this report. Feel free to reopen if there is problem.
Previous Comments:
------------------------------------------------------------------------
[2001-08-23 20:03:19] [EMAIL PROTECTED]
This appeared between 4.0.4pl1 and 4.0.6. The following
code snippet reproduces the bug.
=====================
<?
$state = array(
'packversion' => 'Audit 1.0',
'createdate' => '08/22/2001',
'folder' => array(
array(
'itemid' => '1000',
'name' => '-1000',
'title' => 'Parent',
'doctype' => 'P',
'parent' => '0',
'createdate' => '08/22/2001',
),
array(
'itemid' => '2000',
'name' => '-2000',
'title' => 'Parent',
'doctype' => 'P',
'parent' => '0',
'createdate' => '08/22/2001',
),
),
);
$info = array(
'itemid' => '2050',
'name' => '-2050',
'title' => 'Parent',
'doctype' => 'P',
'parent' => '2000',
'createdate' => '08/22/2001',
);
AddInfo($state, $info);
print_r($state);
function AddInfo(&$st, $in)
{
$parent = FindStateItem($st,
$in['itemid']);
$parent['folder'][] = $in;
}
function &FindStateItem(&$_state, $_itemid, $_op =
'') {
reset($_state);
while (list($key,$val) = each($_state)) {
//if (!is_array($val)) {
//continue;
//}
for ($i = 0; $i < count($val); $i++) {
if ($val[$i]['itemid'] ==
$_itemid) {
//if (is_array($val[$i]) &&
$val[$i]['itemid'] == $_itemid) {
if ($_op == 'delete') {
unset($_state[$key][$i]);
return 1;
}
return $_state[$key][$i];
}
}
for ($i = 0; $i < count($val); $i++) {
if (!is_array($val[$i])) {
continue;
}
$item =
FindStateItem($_state[$key][$i], $_itemid, $_op);
if ($item) {
return $item;
}
}
}
}
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=12935&edit=1
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]