winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit af81f1d9a02a58de4b5394df8db44ce33ef49e93
parent 28a239c663da1f8551c01e2851c0e4f0433d7d74
Author: Kaleb Luedtke <trenlymc@gmail.com>
Date:   Wed, 19 Feb 2025 15:22:01 -0600

Don't rely on parameter order when creating VersionRange (#5213)

Instead of relying on the parameters to be in the correct order for
minimum and maximum when creating a VersionRange, the code can instead
just put them in the right order.
Diffstat:
Msrc/AppInstallerCLITests/Versions.cpp | 2+-
Msrc/AppInstallerSharedLib/Versions.cpp | 15+++++++++++----
2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/AppInstallerCLITests/Versions.cpp b/src/AppInstallerCLITests/Versions.cpp @@ -373,7 +373,7 @@ TEST_CASE("VersionRange", "[versions]") // Create REQUIRE_NOTHROW(VersionRange{ Version{ "1.0" }, Version{ "2.0" } }); REQUIRE_NOTHROW(VersionRange{ Version{ "1.0" }, Version{ "1.0" } }); - REQUIRE_THROWS(VersionRange{ Version{ "2.0" }, Version{ "1.0" } }); + REQUIRE_NOTHROW(VersionRange{ Version{ "2.0" }, Version{ "1.0" } }); // Overlaps REQUIRE(VersionRange{ Version{ "1.0" }, Version{ "2.0" } }.Overlaps(VersionRange{ Version{ "2.0" }, Version{ "3.0" } })); diff --git a/src/AppInstallerSharedLib/Versions.cpp b/src/AppInstallerSharedLib/Versions.cpp @@ -533,11 +533,18 @@ namespace AppInstaller::Utility return m_buildMetadata; } - VersionRange::VersionRange(Version minVersion, Version maxVersion) + VersionRange::VersionRange(Version first, Version second) { - THROW_HR_IF(E_INVALIDARG, minVersion > maxVersion); - m_minVersion = std::move(minVersion); - m_maxVersion = std::move(maxVersion); + if (first < second) + { + m_minVersion = std::move(first); + m_maxVersion = std::move(second); + } + else + { + m_minVersion = std::move(second); + m_maxVersion = std::move(first); + } } bool VersionRange::Overlaps(const VersionRange& other) const