src/corelib/thread/qmutex.h
changeset 7 f7bc934e204c
parent 0 1918ee327afb
--- a/src/corelib/thread/qmutex.h	Tue Feb 02 00:43:10 2010 +0200
+++ b/src/corelib/thread/qmutex.h	Wed Mar 31 11:06:36 2010 +0300
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
 ** All rights reserved.
 ** Contact: Nokia Corporation (qt-info@nokia.com)
 **
@@ -95,7 +95,7 @@
 {
 public:
     inline explicit QMutexLocker(QMutex *m)
-        : mtx(m)
+        : val(reinterpret_cast<quintptr>(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