ID:               34259
 Updated by:       [EMAIL PROTECTED]
 Reported By:      gabaden at gmail dot com
-Status:           Open
+Status:           Feedback
 Bug Type:         SPL related
 Operating System: winxp sp2
 PHP Version:      5.0.4
 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


Previous Comments:
------------------------------------------------------------------------

[2005-08-25 21:46:30] gabaden at gmail dot com

Description:
------------
ArrayAccess(AA) interface bug.

If you try get element of obj, which implements AA interface by
index($obj[$index]) and $index — result of any scalar
operation($obj[$index+1], it will crush apache server.

p.s. sorry for my English.



Reproduce code:
---------------
[code]
class Collection implements ArrayAccess
        {
                private $items = null;
                private $counter = null;
                function __construct()
                {
                        $this->items = array();
                        $this->counter = 0;
                }
                function add($obj)
                {
                        $this->items[$this->counter++] = $obj;
                }
                function offsetExists($offset)
                {
                        if (isset($this->items[$offset]))
                        {
                                return true;
                        }
                        return false;
                }
        
                function offsetGet($offset)
                {
                        if (isset($this->items[$offset]))
                        {
                                return $this->items[$offset];
                        }                       
                }
        
                function offsetSet($offset, $value)
                {
                        // readonly
                }
        
                function offsetUnset($offset)
                {
                        // readonly
                }
                function count()
                {
                        return $this->counter;
                }       
        }
        
        $arr = array("key1"=>0,
        "key2"=>"");
        
        $arr["key1"] = 1;
        $arr["key2"] = "test";
        
        $arr1[] = $arr;
        
        $col = new Collection();
        $col->add($arr1);
        
        $num = $col->count();
        if ($num > 0)
        {
                for($i=0;$i<$num;$i++)
                {
                        echo "<pre>";
                        print_r($col[$i+0]); //crush 
                        echo "</pre>";
                }
        }
[/code]



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=34259&edit=1

Reply via email to