Commit b084739b authored by Thiago Macieira's avatar Thiago Macieira Committed by Jani Heikkinen
Browse files

Revert "QMutexPool: avoid QVarLengthArray of QAtomicPointers"

This reverts commit 4579d966

.

This causes a miscompilation with ICC 16 on Windows (MSVC 2015 ABI): the
vector created by new[] with () in:

      mutexes(new QAtomicPointer<QMutex>[size]()), // (): zero-initialize

does not actually zero-initialize (see disassembly in the bug
report). This is definitely a compiler bug.

Since we plan on removing QMutexPool in Qt 5.8 anyway, let's just revert
the patch.

Task-number: QTBUG-53360
Change-Id: I06bae9392f534e45b3f1ffff144e823b747e7962
Reviewed-by: default avatarKai Koehne <kai.koehne@qt.io>
parent efd2ea8e
No related merge requests found
Showing with 8 additions and 8 deletions
......@@ -92,10 +92,11 @@ Q_GLOBAL_STATIC_WITH_ARGS(QMutexPool, globalMutexPool, (QMutex::Recursive))
QMutexPool is destructed.
*/
QMutexPool::QMutexPool(QMutex::RecursionMode recursionMode, int size)
: count(size),
mutexes(new QAtomicPointer<QMutex>[size]()), // (): zero-initialize
recursionMode(recursionMode)
: mutexes(size), recursionMode(recursionMode)
{
for (int index = 0; index < mutexes.count(); ++index) {
mutexes[index].store(0);
}
}
/*!
......@@ -104,8 +105,8 @@ QMutexPool::QMutexPool(QMutex::RecursionMode recursionMode, int size)
*/
QMutexPool::~QMutexPool()
{
qDeleteAll(mutexes, mutexes + count);
delete[] mutexes;
for (int index = 0; index < mutexes.count(); ++index)
delete mutexes[index].load();
}
/*!
......
......@@ -66,7 +66,7 @@ public:
~QMutexPool();
inline QMutex *get(const void *address) {
int index = uint(quintptr(address)) % count;
int index = uint(quintptr(address)) % mutexes.count();
QMutex *m = mutexes[index].load();
if (m)
return m;
......@@ -78,8 +78,7 @@ public:
private:
QMutex *createMutex(int index);
int count;
QAtomicPointer<QMutex> *mutexes;
QVarLengthArray<QAtomicPointer<QMutex>, 131> mutexes;
QMutex::RecursionMode recursionMode;
};
......
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