diff --git a/gpt4all-chat/modellist.cpp b/gpt4all-chat/modellist.cpp index e59d7235..7d2d349a 100644 --- a/gpt4all-chat/modellist.cpp +++ b/gpt4all-chat/modellist.cpp @@ -1444,14 +1444,21 @@ void ModelList::updateDataForSettings() static std::strong_ordering 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 (auto diff = aInt <=> bInt; diff != 0) { - return diff; + 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 (auto diff = aInt <=> bInt; diff != 0) + return diff; } }