Преглед на файлове

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