Bug #77263 [Opn]: Segfault when using 2 RecursiveFilterIterator
Edit report at https://bugs.php.net/bug.php?id=77263&edit=1
ID: 77263
User updated by: yani at iliev dot me
Reported by: yani at iliev dot me
-Summary: Segfaullt when using 2 RecursiveFilterIterator
+Summary: Segfault when using 2 RecursiveFilterIterator
Status: Open
Type: Bug
Package: Reproducible crash
-Operating System: Any
+Operating System: Windows 10 Pro x64
-PHP Version: 7.3.0
+PHP Version: 7.2.6
Block user comment: N
Private report: N
New Comment:
Fixed a typo in the title
Previous Comments:
------------------------------------------------------------------------
[2018-12-07 16:03:10] yani at iliev dot me
Description:
------------
When two RecursiveFilterIterator are added to RecursiveDirectoryIterator it results in a segfault.
The same code works in PHP 7.2.x and below
Test script:
---------------
<?php
mkdir("/tmp/dir");
mkdir("/tmp/dir/subdir");
touch("/tmp/dir/file1");
touch("/tmp/dir/subdir/file2");
class Filter1 extends RecursiveFilterIterator {
public function accept() { return $this->getInnerIterator()->getSubPathname() !=
''; }
}
class Filter2 extends RecursiveFilterIterator {
public function accept() { return $this->getInnerIterator()->getSubPathname() != '
'; }
}
$iterator = new RecursiveDirectoryIterator( '/tmp', FilesystemIterator::SKIP_DOTS );
$iterator = new Filter1( $iterator );
$iterator = new Filter2( $iterator );
$iterator = new RecursiveIteratorIterator( $iterator, RecursiveIteratorIterator::LEAVES_ONLY,
RecursiveIteratorIterator::CATCH_GET_CHILD );
foreach ( $iterator as $item ) {
echo $iterator->getSubPathName() . PHP_EOL;
}
Expected result:
----------------
dir/file1
dir/subdir/file2
Actual result:
--------------
dir/file1
Process exited with code 139.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=77263&edit=1
Thread (5 messages)