bug77263.phpt 987 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. --TEST--
  2. Bug #77263 (Segfault when using 2 RecursiveFilterIterator)
  3. --FILE--
  4. <?php
  5. $dir = __DIR__ . '/bug77263';
  6. mkdir($dir);
  7. mkdir("$dir/subdir");
  8. touch("$dir/file1");
  9. touch("$dir/subdir/file2");
  10. class Filter1 extends RecursiveFilterIterator {
  11. public function accept(): bool { return $this->getInnerIterator()->getSubPathname() != ''; }
  12. }
  13. class Filter2 extends RecursiveFilterIterator {
  14. public function accept(): bool { return $this->getInnerIterator()->getSubPathname() != ' '; }
  15. }
  16. $iterator = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS );
  17. $iterator = new Filter1( $iterator );
  18. $iterator = new Filter2( $iterator );
  19. $iterator = new RecursiveIteratorIterator( $iterator, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD );
  20. foreach ( $iterator as $item ) {
  21. }
  22. ?>
  23. OK
  24. --CLEAN--
  25. <?php
  26. $dir = __DIR__ . '/bug77263';
  27. unlink("$dir/file1");
  28. unlink("$dir/subdir/file2");
  29. rmdir("$dir/subdir");
  30. rmdir($dir);
  31. ?>
  32. --EXPECT--
  33. OK