mirror of
https://github.com/nomic-ai/gpt4all
synced 2024-11-10 01:10:35 +00:00
Don't compare non-numeric parts of the version string. (#2762)
Signed-off-by: Adam Treat <treat.adam@gmail.com>
This commit is contained in:
parent
ee6064b608
commit
78cc324e8c
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user