]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_utilities/lib/seccfobject.cpp
Security-59754.80.3.tar.gz
[apple/security.git] / OSX / libsecurity_utilities / lib / seccfobject.cpp
index 9fcfc7c0fe7825ed0d10bc4deddb319e11c128b3..04972e7c303951406e4446752c974e45785f782b 100644 (file)
@@ -25,6 +25,7 @@
 #include <security_utilities/cfclass.h>
 #include <security_utilities/errors.h>
 #include <security_utilities/debugging.h>
+#include <os/lock.h>
 
 #include <list>
 #include <security_utilities/globalizer.h>
@@ -111,7 +112,7 @@ void SecPointerBase::copy(SecCFObject * p)
 // SecCFObject
 //
 SecCFObject *
-SecCFObject::optional(CFTypeRef cfTypeRef) throw()
+SecCFObject::optional(CFTypeRef cfTypeRef) _NOEXCEPT
 {
        if (!cfTypeRef)
                return NULL;
@@ -130,7 +131,7 @@ SecCFObject::required(CFTypeRef cfTypeRef, OSStatus error)
 }
 
 void *
-SecCFObject::allocate(size_t size, const CFClass &cfclass) throw(std::bad_alloc)
+SecCFObject::allocate(size_t size, const CFClass &cfclass)
 {
        CFTypeRef p = _CFRuntimeCreateInstance(NULL, cfclass.typeID,
                size + kAlignedRuntimeSize - sizeof(CFRuntimeBase), NULL);
@@ -145,7 +146,7 @@ SecCFObject::allocate(size_t size, const CFClass &cfclass) throw(std::bad_alloc)
 }
 
 void
-SecCFObject::operator delete(void *object) throw()
+SecCFObject::operator delete(void *object) _NOEXCEPT
 {
        CFTypeRef cfType = reinterpret_cast<CFTypeRef>(reinterpret_cast<const uint8_t *>(object) - kAlignedRuntimeSize);
 
@@ -156,12 +157,12 @@ SecCFObject::operator delete(void *object) throw()
 SecCFObject::SecCFObject()
 {
     mRetainCount = 1;
-    mRetainSpinLock = OS_SPINLOCK_INIT;
+    mRetainLock = OS_UNFAIR_LOCK_INIT;
 }
 
 uint32_t SecCFObject::updateRetainCount(intptr_t direction, uint32_t *oldCount)
 {
-    OSSpinLockLock(&mRetainSpinLock);
+    os_unfair_lock_lock(&mRetainLock);
 
     if (oldCount != NULL)
     {
@@ -179,7 +180,7 @@ uint32_t SecCFObject::updateRetainCount(intptr_t direction, uint32_t *oldCount)
     
     uint32_t result = mRetainCount;
 
-    OSSpinLockUnlock(&mRetainSpinLock);
+    os_unfair_lock_unlock(&mRetainLock);
     
     return result;
 }
@@ -216,7 +217,7 @@ SecCFObject::copyDebugDesc()
 }
 
 CFTypeRef
-SecCFObject::handle(bool retain) throw()
+SecCFObject::handle(bool retain) _NOEXCEPT
 {
        CFTypeRef cfType = *this;
        if (retain && !isNew()) CFRetain(cfType);