From f4b6628083bf98ffa9169d8a8b890d84b6046867 Mon Sep 17 00:00:00 2001 From: Jan-Arve Saether Date: Fri, 25 Nov 2011 13:28:40 +0100 Subject: [PATCH] Make QBasicAtomicPointer work with T=const (int|any type) on Windows Change-Id: I2301ea3fa399bcc5d6d8c6b487a3fb78db19c67a Reviewed-by: Friedemann Kleint Reviewed-by: Olivier Goffart --- src/corelib/arch/qatomic_windows.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/corelib/arch/qatomic_windows.h b/src/corelib/arch/qatomic_windows.h index f3f9914..4807c69 100644 --- a/src/corelib/arch/qatomic_windows.h +++ b/src/corelib/arch/qatomic_windows.h @@ -219,13 +219,13 @@ extern "C" { # define QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(value, newValue, expectedValue) \ QT_INTERLOCKED_FUNCTION( CompareExchangePointer )( \ - reinterpret_cast( QT_INTERLOCKED_REMOVE_VOLATILE( value ) ), \ + (void * QT_INTERLOCKED_VOLATILE *)( QT_INTERLOCKED_REMOVE_VOLATILE(value) ), \ newValue, \ expectedValue ) # define QT_INTERLOCKED_EXCHANGE_POINTER(value, newValue) \ QT_INTERLOCKED_FUNCTION( ExchangePointer )( \ - reinterpret_cast( QT_INTERLOCKED_REMOVE_VOLATILE( value ) ), \ + (void * QT_INTERLOCKED_VOLATILE *)( QT_INTERLOCKED_REMOVE_VOLATILE(value) ), \ newValue ) # define QT_INTERLOCKED_EXCHANGE_ADD_POINTER(value, valueToAdd) \ @@ -345,7 +345,7 @@ inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd) template Q_INLINE_TEMPLATE bool QBasicAtomicPointer::testAndSetOrdered(T *expectedValue, T *newValue) { - return QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(&_q_value, newValue, expectedValue) + return QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(&_q_value, (void*)newValue, (void*)expectedValue) == expectedValue; } @@ -353,7 +353,7 @@ template Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndStoreOrdered(T* newValue) { return reinterpret_cast( - QT_INTERLOCKED_EXCHANGE_POINTER(&_q_value, newValue)); + QT_INTERLOCKED_EXCHANGE_POINTER(&_q_value, (void*)newValue)); } template -- 2.7.4