Bug #12935: memory corruption with array references

From: Date: Fri, 24 Aug 2001 00:03:19 +0000
Subject: Bug #12935: memory corruption with array references
Groups: php.dev 
Request: Send a blank email to php-dev+get-64201@lists.php.net to get a copy of this message
From: jdonagher@php.net Operating system: linux 2.2.14-5.0 PHP version: 4.0.6 PHP Bug Type: Scripting Engine problem Bug description: memory corruption with array references 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 bug report at: http://bugs.php.net/?id=12935&edit=1

« previous php.dev (#64201) next »