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
main
Peter Smith 11 years ago
parent f4baa50a05
commit 8a7e2a3c00

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

Loading…
Cancel
Save