|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2011-03-25 21:34 UTC] lbarnaud@php.net
Description:
------------
FilterIterator instances crash when the constructor has not been called
(accidentally).
Test script:
---------------
<?php
class Test extends FilterIterator {
function __construct() {
}
function accept() {
}
}
$t = new Test;
foreach($t as $e);
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 20:00:01 2025 UTC |
I wondered if other classes are be affected by this, and after some tests I found that the following classes are affected: IteratorIterator FilterIterator RecursiveFilterIterator ParentIterator LimitIterator CachingIterator RecursiveCachingIterator NoRewindIterator InfiniteIterator RegexIterator RecursiveRegexIterator GlobIterator SplFileObject SplTempFileObject tests: <?php class IteratorIteratorTest extends IteratorIterator { function __construct(){} } $o = new IteratorIteratorTest; $o->rewind() class FilterIteratorTest extends FilterIterator { function __construct(){} function accept(){} } $o = new FilterIteratorTest; $o->rewind() class RecursiveFilterIteratorTest extends RecursiveFilterIterator { function __construct(){} function accept(){} } $o = new RecursiveFilterIteratorTest; $o->hasChildren() class ParentIteratorTest extends ParentIterator { function __construct(){} } $o = new ParentIteratorTest; $o->accept() class LimitIteratorTest extends LimitIterator { function __construct(){} } $o = new LimitIteratorTest; $o->rewind() class CachingIteratorTest extends CachingIterator { function __construct(){} } $o = new CachingIteratorTest; $o->rewind() class RecursiveCachingIteratorTest extends RecursiveCachingIterator { function __construct(){} } $o = new RecursiveCachingIteratorTest; $o->rewind() class NoRewindIteratorTest extends NoRewindIterator { function __construct(){} } $o = new NoRewindIteratorTest; $o->valid() class InfiniteIteratorTest extends InfiniteIterator { function __construct(){} } $o = new InfiniteIteratorTest; $o->next() class RegexIteratorTest extends RegexIterator { function __construct(){} } $o = new RegexIteratorTest; $o->rewind() class RecursiveRegexIteratorTest extends RecursiveRegexIterator { function __construct(){} } $o = new RecursiveRegexIteratorTest; $o->hasChildren() class GlobIteratorTest extends GlobIterator { function __construct(){} } $o = new GlobIteratorTest; $o->count() class SplFileObjectTest extends SplFileObject { function __construct(){} } $o = new SplFileObjectTest; $o->rewind() class SplTempFileObjectTest extends SplTempFileObject { function __construct(){} } $o = new SplTempFileObjectTest; $o->rewind()