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 năm trước cách đây
mục cha
commit
5978197b5d

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

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

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

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