From 3b26304c28d4fa8c12b9b823f160a3c469718242 Mon Sep 17 00:00:00 2001 From: amrbashir Date: Wed, 21 Dec 2022 02:23:36 +0200 Subject: [PATCH] fix: handle non-semversions --- SemverCompare.cpp | 15 ++++++++++++--- SemverCompare.nsi | 9 +++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/SemverCompare.cpp b/SemverCompare.cpp index 11d48c5..53d3e83 100644 --- a/SemverCompare.cpp +++ b/SemverCompare.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include "include\nsis\pluginapi.h" @@ -30,8 +31,16 @@ extern "C" void __declspec(dllexport) SemverCompare(HWND hwndParent, std::string ver1(ver1w.begin(), ver1w.end()); std::string ver2(ver2w.begin(), ver2w.end()); - semver::version v1 = semver::from_string(ver1); - semver::version v2 = semver::from_string(ver2); + std::optional v1 = semver::from_string_noexcept(ver1); + std::optional v2 = semver::from_string_noexcept(ver2); - pushint(v1.compare(v2)); + if (v1.has_value() && !v2.has_value()) { + pushint(1); + } else if (!v1.has_value() && v2.has_value()) { + pushint(-1); + } else if (!v1.has_value() && !v2.has_value()) { + pushint(0); + } else { + pushint(v1.value().compare(v2.value())); + } } diff --git a/SemverCompare.nsi b/SemverCompare.nsi index c28909c..651c4e6 100644 --- a/SemverCompare.nsi +++ b/SemverCompare.nsi @@ -24,4 +24,13 @@ Section "nsSemverCompare" SemverCompare::SemverCompare "1.2.1-alpha.1" "1.2.1-alpha.1" Pop $1 DetailPrint $1 + SemverCompare::SemverCompare "1.2qe2.1-alpha.1" "1.2.1-alpha.1" + Pop $1 + DetailPrint $1 + SemverCompare::SemverCompare "1.2.1-alpha.1" "-q1.2.1-alpha.1" + Pop $1 + DetailPrint $1 + SemverCompare::SemverCompare "1.2.saf1-alpha.1" "-q1.2.1-alpha.1" + Pop $1 + DetailPrint $1 SectionEnd