From 2f2d6c9de7962e56f89fa2a86e6e5fe1312cf467 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Fri, 3 Feb 2023 22:48:18 +0100 Subject: [PATCH] Fix package sorting logic, fixes #11287 --- src/Composer/Util/PackageSorter.php | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/Composer/Util/PackageSorter.php b/src/Composer/Util/PackageSorter.php index 85c6ba7ac..80ea2cc9c 100644 --- a/src/Composer/Util/PackageSorter.php +++ b/src/Composer/Util/PackageSorter.php @@ -28,21 +28,22 @@ class PackageSorter */ public static function getMostCurrentVersion(array $packages): ?PackageInterface { - return array_reduce($packages, static function ($carry, $pkg) { - if ($carry === null) { - return $pkg; + if (count($packages) === 0) { + return null; + } + + $highest = reset($packages); + foreach ($packages as $candidate) { + if ($candidate->isDefaultBranch()) { + return $candidate; } - if ($pkg->isDefaultBranch()) { - return $pkg; + if (version_compare($highest->getVersion(), $candidate->getVersion(), '<')) { + $highest = $candidate; } + } - if (!$carry->isDefaultBranch() && version_compare($carry->getVersion(), $pkg->getVersion(), '<')) { - return $pkg; - } - - return $carry; - }); + return $highest; } /**