diff --git a/src/Composer/Repository/ArrayRepository.php b/src/Composer/Repository/ArrayRepository.php index 3d9e22d14..c11c7fe68 100644 --- a/src/Composer/Repository/ArrayRepository.php +++ b/src/Composer/Repository/ArrayRepository.php @@ -28,6 +28,10 @@ class ArrayRepository extends BaseRepository { /** @var PackageInterface[] */ protected $packages; + + /** + * @var PackageInterface[] indexed by package unique name and used to cache hasPackage calls + */ protected $packageMap; public function __construct(array $packages = array()) @@ -151,6 +155,9 @@ class ArrayRepository extends BaseRepository $this->addPackage($aliasedPackage); } } + + // invalidate package map cache + $this->packageMap = null; } protected function createAliasPackage(PackageInterface $package, $alias, $prettyAlias) @@ -171,6 +178,9 @@ class ArrayRepository extends BaseRepository if ($packageId === $repoPackage->getUniqueName()) { array_splice($this->packages, $key, 1); + // invalidate package map cache + $this->packageMap = null; + return; } }