diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-10-19 18:26:20 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-10-20 08:48:12 +0000 |
commit | fb0db5c745bc6fe4885afd11750e267f89cf99da (patch) | |
tree | 8337bd91c94a5dbf928623fe0cf63fef12e199dc | |
parent | f21d0b531f46f67ceb0569af08893882ddd506e3 (diff) |
ProjectExplorer: Fix sorting predicate to have a strict weak order
Fixes random crashes when opening the 'Manage session' dialog.
Amends 8c0906e8fb632b82135a843657a1df9216a93c60
Fixes: QTCREATORBUG-24797
Change-Id: Ic3118163d1a9a10eacc1ea1cc90f54c86ac790d9
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r-- | src/plugins/projectexplorer/sessionmodel.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/plugins/projectexplorer/sessionmodel.cpp b/src/plugins/projectexplorer/sessionmodel.cpp index b0d847e7df..4cfa95eea5 100644 --- a/src/plugins/projectexplorer/sessionmodel.cpp +++ b/src/plugins/projectexplorer/sessionmodel.cpp @@ -183,10 +183,18 @@ void SessionModel::sort(int column, Qt::SortOrder order) beginResetModel(); const auto cmp = [column, order](const QString &s1, const QString &s2) { bool isLess; - if (column == 0) + if (column == 0) { + if (s1 == s2) + return false; isLess = s1 < s2; - else - isLess = SessionManager::sessionDateTime(s1) < SessionManager::sessionDateTime(s2); + } + else { + const auto s1time = SessionManager::sessionDateTime(s1); + const auto s2time = SessionManager::sessionDateTime(s2); + if (s1time == s2time) + return false; + isLess = s1time < s2time; + } if (order == Qt::DescendingOrder) isLess = !isLess; return isLess; |