소스 검색

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

Jordi Boggiano 12 년 전
부모
커밋
5978197b5d
2개의 변경된 파일8개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      src/Composer/DependencyResolver/Pool.php
  2. 7 0
      src/Composer/Repository/ComposerRepository.php

+ 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