From 96526f36356879b6028c9b9131fd34f5ce87d402 Mon Sep 17 00:00:00 2001 From: Adam Treat Date: Sun, 28 Jul 2024 11:30:48 -0400 Subject: [PATCH] Fix the download compareVersions to. Signed-off-by: Adam Treat --- gpt4all-chat/download.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/gpt4all-chat/download.cpp b/gpt4all-chat/download.cpp index a65654f5..399e6e7b 100644 --- a/gpt4all-chat/download.cpp +++ b/gpt4all-chat/download.cpp @@ -62,17 +62,24 @@ static bool operator==(const ReleaseInfo& lhs, const ReleaseInfo& rhs) static bool compareVersions(const QString &a, const QString &b) { + QRegularExpression regex("(\\d+)"); QStringList aParts = a.split('.'); QStringList bParts = b.split('.'); + Q_ASSERT(aParts.size() == 3); + Q_ASSERT(bParts.size() == 3); for (int i = 0; i < std::min(aParts.size(), bParts.size()); ++i) { - int aInt = aParts[i].toInt(); - int bInt = bParts[i].toInt(); - - if (aInt > bInt) { - return true; - } else if (aInt < bInt) { - return false; + QRegularExpressionMatch aMatch = regex.match(aParts[i]); + QRegularExpressionMatch bMatch = regex.match(bParts[i]); + Q_ASSERT(aMatch.hasMatch() && bMatch.hasMatch()); + if (aMatch.hasMatch() && bMatch.hasMatch()) { + int aInt = aMatch.captured(1).toInt(); + int bInt = bMatch.captured(1).toInt(); + if (aInt > bInt) { + return true; + } else if (aInt < bInt) { + return false; + } } }