Annotation of embedaddon/php/ext/spl/tests/bug37457.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Bug #37457 (Crash when an exception is thrown in accept() method of FilterIterator)
                      3: --FILE--
                      4: <?php
                      5: 
                      6: class Collection implements Iterator
                      7: {
                      8:        protected $array, $valid = false;
                      9:        
                     10:        public function __construct(array $a)
                     11:        {
                     12:                echo __METHOD__ . "\n";
                     13:                $this->array = $a;
                     14:        }
                     15:        
                     16:        public function current()
                     17:        {
                     18:                echo __METHOD__ . "\n";
                     19:                return current($this->array);
                     20:        }
                     21: 
                     22:        public function key()
                     23:        {
                     24:                echo __METHOD__ . "\n";
                     25:                return key($this->array);
                     26:        }
                     27: 
                     28:        public function next()
                     29:        {
                     30:                echo __METHOD__ . "\n";
                     31:                $this->valid = (false !== next($this->array));
                     32:        }
                     33: 
                     34:        public function valid()
                     35:        {
                     36:                echo __METHOD__ . "\n";
                     37:                return $this->valid;
                     38:        }
                     39: 
                     40:        public function rewind()
                     41:        {
                     42:                echo __METHOD__ . "\n";
                     43:                $this->valid = (false !== reset($this->array));
                     44:        }
                     45: }
                     46: 
                     47: class TestFilter extends FilterIterator
                     48: {
                     49:     public function accept()
                     50:     {
                     51:                echo __METHOD__ . "\n";
                     52:        throw new Exception("Failure in Accept");
                     53:     }
                     54: }
                     55: 
                     56: $test = new TestFilter(new Collection(array(0)));
                     57: 
                     58: try
                     59: {
                     60:        foreach ($test as $item)
                     61:        {
                     62:                echo $item;
                     63:        }
                     64: }
                     65: catch (Exception $e)
                     66: {
                     67:        var_dump($e->getMessage());
                     68: }
                     69: 
                     70: ?>
                     71: ===DONE===
                     72: --EXPECTF--
                     73: Collection::__construct
                     74: Collection::rewind
                     75: Collection::valid
                     76: Collection::current
                     77: Collection::key
                     78: TestFilter::accept
                     79: string(17) "Failure in Accept"
                     80: ===DONE===

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>