diff -r dee5afe5301f -r 3f74d0d4af4c src/corelib/thread/qmutex.h --- a/src/corelib/thread/qmutex.h Mon Mar 15 12:43:09 2010 +0200 +++ b/src/corelib/thread/qmutex.h Thu Apr 08 14:19:33 2010 +0300 @@ -95,7 +95,7 @@ { public: inline explicit QMutexLocker(QMutex *m) - : mtx(m) + : val(reinterpret_cast(m)) { Q_ASSERT_X((val & quintptr(1u)) == quintptr(0), "QMutexLocker", "QMutex pointer is misaligned"); @@ -105,19 +105,19 @@ inline void unlock() { - if (mtx) { + if (val) { if ((val & quintptr(1u)) == quintptr(1u)) { val &= ~quintptr(1u); - mtx->unlock(); + mutex()->unlock(); } } } inline void relock() { - if (mtx) { + if (val) { if ((val & quintptr(1u)) == quintptr(0u)) { - mtx->lock(); + mutex()->lock(); val |= quintptr(1u); } } @@ -140,10 +140,7 @@ private: Q_DISABLE_COPY(QMutexLocker) - union { - QMutex *mtx; - quintptr val; - }; + quintptr val; }; #else // QT_NO_THREAD