]> granicus.if.org Git - taglib/commitdiff
Make RefCounter compile on OS X with the 10.4 SDK
authorLukáš Lalinský <lalinsky@gmail.com>
Sat, 14 May 2011 22:07:29 +0000 (00:07 +0200)
committerLukáš Lalinský <lalinsky@gmail.com>
Sat, 14 May 2011 22:07:29 +0000 (00:07 +0200)
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. :)

taglib/toolkit/taglib.h

index 922640d1959e9b4c6f006c906d64a19e38a48e46..c42f1bde937b38a73564b1db4d44bcf5f3939640 100644 (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;