Browse Source

Reset package IDs before they can be used in the pool in case there are already some in the cache

Jordi Boggiano 12 years ago
parent
commit
5978197b5d

+ 1 - 0
src/Composer/DependencyResolver/Pool.php

@@ -83,6 +83,7 @@ class Pool
 
             if ($repo instanceof ComposerRepository && $repo->hasProviders()) {
                 $this->composerRepos[] = $repo;
+                $repo->resetPackageIds();
             } elseif ($repo instanceof StreamableRepositoryInterface) {
                 foreach ($repo->getMinimalPackages() as $package) {
                     $name = $package['name'];

+ 7 - 0
src/Composer/Repository/ComposerRepository.php

@@ -199,6 +199,13 @@ class ComposerRepository extends ArrayRepository implements NotifiableRepository
         return $this->hasProviders;
     }
 
+    public function resetPackageIds()
+    {
+        foreach ($this->providersByUid as $package) {
+            $package->setId(-1);
+        }
+    }
+
     public function whatProvides(Pool $pool, $name)
     {
         // skip platform packages