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>