diff options
-rw-r--r-- | src/corelib/thread/qgenericatomic.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/corelib/thread/qgenericatomic.h b/src/corelib/thread/qgenericatomic.h index aeed199c97..3546becd77 100644 --- a/src/corelib/thread/qgenericatomic.h +++ b/src/corelib/thread/qgenericatomic.h @@ -294,9 +294,9 @@ template <typename BaseClass> struct QGenericAtomicOps T fetchAndAndRelaxed(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) Q_DECL_NOTHROW { // implement fetchAndAnd on top of testAndSet + T tmp = BaseClass::load(_q_value); Q_FOREVER { - T tmp = BaseClass::load(_q_value); - if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp & operand))) + if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp & operand), &tmp)) return tmp; } } @@ -327,9 +327,9 @@ template <typename BaseClass> struct QGenericAtomicOps T fetchAndOrRelaxed(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) Q_DECL_NOTHROW { // implement fetchAndOr on top of testAndSet + T tmp = BaseClass::load(_q_value); Q_FOREVER { - T tmp = BaseClass::load(_q_value); - if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp | operand))) + if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp | operand), &tmp)) return tmp; } } @@ -360,9 +360,9 @@ template <typename BaseClass> struct QGenericAtomicOps T fetchAndXorRelaxed(T &_q_value, typename QtPrivate::QEnableIf<QTypeInfo<T>::isIntegral, T>::Type operand) Q_DECL_NOTHROW { // implement fetchAndXor on top of testAndSet + T tmp = BaseClass::load(_q_value); Q_FOREVER { - T tmp = BaseClass::load(_q_value); - if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp ^ operand))) + if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp ^ operand), &tmp)) return tmp; } } |