Make RefCounter compile on OS X with the 10.4 SDK

The 10.4 SDK defines OSAtomic functions as int32_t, while 10.5 and newer SDKs
define them as volatile int32_t. This caused a compilation error when
compiling against the 10.4 SDK.

I'd have prefered a preprocessor-based solution, but I couldn't find any
macro that says the SDK version, so I copied this cast solution from
Apple's WebKit. I assume then know what they are doing if they have to
workaround their own API. :)
This commit is contained in:
Lukáš Lalinský 2011-05-15 00:07:29 +02:00
parent efeccbf726
commit dc062a0844

View File

@ -100,8 +100,8 @@ namespace TagLib {
RefCounter() : refCount(1) {}
#ifdef TAGLIB_ATOMIC_MAC
void ref() { OSAtomicIncrement32Barrier(&refCount); }
bool deref() { return ! OSAtomicDecrement32Barrier(&refCount); }
void ref() { OSAtomicIncrement32Barrier(const_cast<int32_t*>(&refCount)); }
bool deref() { return ! OSAtomicDecrement32Barrier(const_cast<int32_t*>(&refCount)); }
int32_t count() { return refCount; }
private:
volatile int32_t refCount;