aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2020-10-19 18:26:20 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2020-10-20 08:48:12 +0000
commitfb0db5c745bc6fe4885afd11750e267f89cf99da (patch)
tree8337bd91c94a5dbf928623fe0cf63fef12e199dc
parentf21d0b531f46f67ceb0569af08893882ddd506e3 (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.cpp14
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;