diff --git a/emper/lib/LinuxVersion.cpp b/emper/lib/LinuxVersion.cpp index f268d050dc62f992be090bcad00b0896c26c1cdd..e4306b2f782391ac07db1b2ed1b5930f92635a47 100644 --- a/emper/lib/LinuxVersion.cpp +++ b/emper/lib/LinuxVersion.cpp @@ -2,7 +2,6 @@ // Copyright © 2021 Florian Fischer #include "lib/LinuxVersion.hpp" -#include <cassert> #include <cerrno> #include <cstdlib> @@ -47,7 +46,8 @@ auto LinuxVersion::compare(const std::string& s) -> int { dot_pos2 = s.size(); } else { dot_pos2 = s.find('.', last_dot_pos2); - assert(dot_pos2 != std::string::npos); + // The string to compare has less dot-separated components + if (dot_pos2 == std::string::npos) return 0; } long n1 = checked_strtol(this->version.substr(last_dot_pos, dot_pos - last_dot_pos)); diff --git a/tests/lib/LinuxVersionTest.cpp b/tests/lib/LinuxVersionTest.cpp index b14ec049c47731467a0fe84b80d082a716f57188..4f171a74b2a5a98d91dc0725cf90405328b3a12c 100644 --- a/tests/lib/LinuxVersionTest.cpp +++ b/tests/lib/LinuxVersionTest.cpp @@ -73,3 +73,9 @@ TEST(LinuxVersion, ge) { ASSERT_TRUE(TestLinuxVersion::ge("5.14.0", "4.13")); ASSERT_TRUE(TestLinuxVersion::ge("5.14.0", "5.14.0")); } + +// NOLINTNEXTLINE(modernize-use-trailing-return-type) +TEST(LinuxVersion, real_world) { + ASSERT_TRUE(TestLinuxVersion::le("5.15.0-0.bpo.2-amd64", "5.15.0")); + ASSERT_TRUE(TestLinuxVersion::ge("5.17.0", "5.15.0-0.bpo.2-amd64")); +}