QOrderedMutexLocker: use std::less to prevent undefined behavior

operator< between pointers is undefined unless the two pointers
point in the same array, which is not what QOrderedMutexLocker does.

Change-Id: Ia6594900cfa807a73f20e157ce896b4321a3d746
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
bb10
Giuseppe D'Angelo 2016-01-18 12:38:36 +01:00
parent fd6cf5c875
commit 5007352164
1 changed files with 4 additions and 2 deletions

View File

@ -47,6 +47,8 @@
#include <QtCore/qmutex.h>
#include <functional>
QT_BEGIN_NAMESPACE
/*
@ -57,8 +59,8 @@ class QOrderedMutexLocker
{
public:
QOrderedMutexLocker(QMutex *m1, QMutex *m2)
: mtx1((m1 == m2) ? m1 : (m1 < m2 ? m1 : m2)),
mtx2((m1 == m2) ? 0 : (m1 < m2 ? m2 : m1)),
: mtx1((m1 == m2) ? m1 : (std::less<QMutex *>()(m1, m2) ? m1 : m2)),
mtx2((m1 == m2) ? 0 : (std::less<QMutex *>()(m1, m2) ? m2 : m1)),
locked(false)
{
relock();