ID: 32993
Comment by: tjerk dot meesters at gmail dot com
Reported By: vojtech at x dot cz
Status: Assigned
Bug Type: Zend Engine 2 problem
Operating System: *
PHP Version: 5.0.4
Assigned To: helly
New Comment:
I've had a similar problem, this time with an exception in next():
class MyIterator implements Iterator
{
function rewind() {}
function next() { throw new Exception('next()'); }
function valid() { return true; }
function current() { return 'test'; }
function key() { return 'test'; }
}
try {
foreach (new MyIterator() as $x => $y) {
// do something
}
} catch (Exception $e) {
echo "{$e->getMessage()}\n";
}
--- result ---
Fatal error: Couldn't execute method MyIterator::valid in Unknown on
line 0
--- version ---
PHP 5.0.4 (cli) on Linux (Zend Engine v2.0.4-dev)
Previous Comments:
------------------------------------------------------------------------
[2005-05-10 08:46:49] [EMAIL PROTECTED]
Results in a SEGV in head
------------------------------------------------------------------------
[2005-05-10 06:17:40] vojtech at x dot cz
Description:
------------
It's seems there is not correctly processed exception from current()
and script ends up with fatal error.
Reproduce code:
---------------
class Test implements Iterator {
public $arr = array();
public function rewind() { return reset($this->arr); }
public function current() { throw new Exception(); }
public function key() { return key($this->arr); }
public function next() { return next($this->arr); }
public function valid() { return (current($this->arr) !==
false); }
}
$t = new Test();
$t->arr = array(1, 2, 3);
try {
foreach ($t as $v) {
; // do something
}
} catch (Exception $e) {
; // handle exception
}
Actual result:
--------------
Fatal error: Couldn't execute method Test::key in Unknown on line 0
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=32993&edit=1