Bug #78223 [Opn]: DirectoryIterator::current returns itself, also other classes

From: Date: Fri, 28 Jun 2019 02:12:15 +0000
Subject: Bug #78223 [Opn]: DirectoryIterator::current returns itself, also other classes
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-221527@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=78223&edit=1 ID: 78223 Updated by: requinix@php.net Reported by: zerkms at zerkms dot ru -Summary: DirectoryIterator entries invalidated after its destruction +Summary: DirectoryIterator::current returns itself, also other classes Status: Open Type: Bug Package: SPL related Operating System: linux PHP Version: 7.3.6 Block user comment: N Private report: N New Comment: Dump out $files and you'll see all entries in it are the same object: the DirectoryIterator itself. When iterator_to_array finishes the DirectoryIterator will be at the end of the list and so invalid, which then means all the (duplicate) values in the array are also invalid. It's a quirk of how DirectoryIterator and some others work. I would love to see this fixed, but that may not be feasible... Previous Comments: ------------------------------------------------------------------------ [2019-06-28 02:01:53] zerkms at zerkms dot ru Description: ------------ It's reproducible on all php >= 7 versions (including 7.4-rc) I probably am missing something, but I cannot find it documented anywhere, hence the behaviour surprises me. Test script: --------------- <?php $files = iterator_to_array(new DirectoryIterator(__DIR__)); var_dump($files[0]->getRealPath()); foreach (new DirectoryIterator(__DIR__) as $f) { var_dump($f->getRealPath()); break; } Expected result: ---------------- string(4) "/app" string(4) "/app" Actual result: -------------- bool(false) string(4) "/app" ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=78223&edit=1

« previous php.bugs (#221527) next »