ID: 49723
Updated by: [email protected]
Reported By: goetas at lignano dot it
-Status: Open
+Status: Assigned
Bug Type: SPL related
Operating System: *
PHP Version: 5.3.0
-Assigned To:
+Assigned To: colder
Previous Comments:
------------------------------------------------------------------------
[2009-10-02 18:29:05] goetas at lignano dot it
source code of LimitIterator, "seek" method at line 63:
if ($this->it instanceof SeekableIterator) {
$this->it->seek($position); <-- there is no check if i can move
pointer to $position like on else branch
$this->pos = $position;
} else {
while($this->pos < $position && $this->it->valid()) { <-- valid()
ensures that i can move to $position
$this->next();
}
}
------------------------------------------------------------------------
[2009-10-02 18:23:57] goetas at lignano dot it
the problem is not resolved with php 5.3.2-dev on my apache2/winxp
------------------------------------------------------------------------
[2009-10-01 16:09:43] [email protected]
Please try using this snapshot:
http://snaps.php.net/php5.3-latest.tar.gz
For Windows:
http://windows.php.net/snapshots/
------------------------------------------------------------------------
[2009-09-30 13:48:01] goetas at lignano dot it
Description:
------------
iterating over an empty seekable iterator causes an unexpected
exception.
with actual implementation of LimitIterator::rewind() there is no way
to do an empty loop over an empty ArrayIterator.
i suggest this implementation for LimitIterator::rewind() method
function rewind(){
$this->it->rewind();
$this->pos = 0;
if($this->it->valid()){ // check for empty iterators
$this->seek($this->offset);
}
}
Reproduce code:
---------------
$it = new ArrayIterator(array());
$limIt = new LimitIterator($it, 0, 5);
foreach ($limIt as $item){
echo $item;
}
Expected result:
----------------
an empty loop
Actual result:
--------------
Uncaught exception 'OutOfBoundsException' with message 'Seek position 0
is out of range'
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=49723&edit=1