1
0
Fork 0

Unbind the filter Closure from ArchivableFilesFinder to allow the object

to be garbage collected correctly, and the folder closed.

Fixes https://github.com/composer/satis/issues/64 for PHP 5.4
pull/1981/head
Peter Smith 2013-06-07 17:11:56 +01:00
parent f4baa50a05
commit 8a7e2a3c00
1 changed files with 20 additions and 13 deletions

View File

@ -52,9 +52,8 @@ class ArchivableFilesFinder extends \FilterIterator
); );
$this->finder = new Finder\Finder(); $this->finder = new Finder\Finder();
$this->finder
->in($sources) $filter = function (\SplFileInfo $file) use ($sources, $filters, $fs) {
->filter(function (\SplFileInfo $file) use ($sources, $filters, $fs) {
$relativePath = preg_replace( $relativePath = preg_replace(
'#^'.preg_quote($sources, '#').'#', '#^'.preg_quote($sources, '#').'#',
'', '',
@ -66,7 +65,15 @@ class ArchivableFilesFinder extends \FilterIterator
$exclude = $filter->filter($relativePath, $exclude); $exclude = $filter->filter($relativePath, $exclude);
} }
return !$exclude; return !$exclude;
}) };
if (method_exists($filter, 'bindTo')) {
$filter = $filter->bindTo(null);
}
$this->finder
->in($sources)
->filter($filter)
->ignoreVCS(true) ->ignoreVCS(true)
->ignoreDotFiles(false); ->ignoreDotFiles(false);