From 4a945da55b406c88c33770cde316675efc3c2862 Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Mon, 1 Dec 2014 19:21:33 +0100 Subject: [PATCH] Avoid generating duplicate conflict rules For each version of each package we create a conflict rule with each other version. These are then added to the rule set and skipped if duplicate so instead we can just generate them only once to begin with and avoid unnecessary memory allocation and duplication lookups. --- src/Composer/DependencyResolver/RuleSetGenerator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Composer/DependencyResolver/RuleSetGenerator.php b/src/Composer/DependencyResolver/RuleSetGenerator.php index 8ea24e742..30e3a0964 100644 --- a/src/Composer/DependencyResolver/RuleSetGenerator.php +++ b/src/Composer/DependencyResolver/RuleSetGenerator.php @@ -241,7 +241,7 @@ class RuleSetGenerator if (($package instanceof AliasPackage) && $package->getAliasOf() === $provider) { $this->addRule(RuleSet::TYPE_PACKAGE, $rule = $this->createRequireRule($package, array($provider), Rule::RULE_PACKAGE_ALIAS, $package)); - } elseif (!$this->obsoleteImpossibleForAlias($package, $provider)) { + } elseif (!$this->obsoleteImpossibleForAlias($package, $provider) && $package->id <= $provider->id) { $reason = ($package->getName() == $provider->getName()) ? Rule::RULE_PACKAGE_SAME_NAME : Rule::RULE_PACKAGE_IMPLICIT_OBSOLETES; $this->addRule(RuleSet::TYPE_PACKAGE, $rule = $this->createConflictRule($package, $provider, $reason, $package)); }