From 5978197b5d4b5c7dd51920d1cc3bc9b02e6a8c50 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Thu, 18 Oct 2012 12:57:55 +0200 Subject: [PATCH] Reset package IDs before they can be used in the pool in case there are already some in the cache --- src/Composer/DependencyResolver/Pool.php | 1 + src/Composer/Repository/ComposerRepository.php | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/Composer/DependencyResolver/Pool.php b/src/Composer/DependencyResolver/Pool.php index a69ae5154..2216d5215 100644 --- a/src/Composer/DependencyResolver/Pool.php +++ b/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']; diff --git a/src/Composer/Repository/ComposerRepository.php b/src/Composer/Repository/ComposerRepository.php index e41a505c0..03d18c3ca 100644 --- a/src/Composer/Repository/ComposerRepository.php +++ b/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