Browse Source

Fix implementation of filterPackages

Jordi Boggiano 6 years ago
parent
commit
c97b7a9be5
1 changed files with 13 additions and 5 deletions
  1. 13 5
      src/Composer/Repository/ComposerRepository.php

+ 13 - 5
src/Composer/Repository/ComposerRepository.php

@@ -185,17 +185,25 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito
 
     private function filterPackages(array $packages, $constraint = null, $returnFirstMatch = false)
     {
-        $packages = array();
+        if (null === $constraint) {
+            if ($returnFirstMatch) {
+                return reset($packages);
+            }
 
-        foreach ($packages as $package) {
+            return $packages;
+        }
 
+        $filteredPackages = array();
+
+        foreach ($packages as $package) {
             $pkgConstraint = new Constraint('==', $package->getVersion());
-            if (null === $constraint || $constraint->matches($pkgConstraint)) {
+
+            if ($constraint->matches($pkgConstraint)) {
                 if ($returnFirstMatch) {
                     return $package;
                 }
 
-                $packages[] = $package;
+                $filteredPackages[] = $package;
             }
         }
 
@@ -203,7 +211,7 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito
             return null;
         }
 
-        return $packages;
+        return $filteredPackages;
     }
 
     public function getPackages()