Commit 35b4c6d4 authored by Martin Tobias Holmedahl Sandsmark's avatar Martin Tobias Holmedahl Sandsmark
Browse files

Fix crashing on starting and quitting

QCollator (especially with Qt 5.14 and ICU 65.1) is very unhappy with
threads.

To avoid having to lock and unlock the mutex everywhere (and ensure it
is unlocked before calling other things that might lock it, etc.), we do
it as locally as possible. Even if for some reason Qt and ICU make
QCollator threadsafe in the future locking here should have minimal
impact.

BUG: 419585

Differential Revision: https://phabricator.kde.org/D28659
parent d868568d
......@@ -33,6 +33,9 @@
#include <QMimeData>
#include <QTimer>
#include <QWidget>
#include <QMutex>
Q_GLOBAL_STATIC_WITH_ARGS(QMutex, s_collatorMutex, (QMutex::Recursive))
// #define KFILEITEMMODEL_DEBUG
......@@ -1878,6 +1881,8 @@ int KFileItemModel::sortRoleCompare(const ItemData* a, const ItemData* b, const
int KFileItemModel::stringCompare(const QString& a, const QString& b, const QCollator& collator) const
{
QMutexLocker collatorLock(s_collatorMutex());
if (m_naturalSorting) {
return collator.compare(a, b);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment