X-Git-Url: https://git.saurik.com/apple/cf.git/blobdiff_plain/d8b101a4f6aa03fafcaee9105fbfdea9132c942c..d73847987a99375010c6d6ace0abb0a25cb9b034:/CFPlugIn_Instance.c diff --git a/CFPlugIn_Instance.c b/CFPlugIn_Instance.c index 3eebd0c..e99211f 100644 --- a/CFPlugIn_Instance.c +++ b/CFPlugIn_Instance.c @@ -2,14 +2,14 @@ * Copyright (c) 2014 Apple Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ - * + * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in * compliance with the License. Please obtain a copy of the License at * http://www.opensource.apple.com/apsl/ and read it before using this * file. - * + * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, @@ -17,12 +17,12 @@ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * Please see the License for the specific language governing rights and * limitations under the License. - * + * * @APPLE_LICENSE_HEADER_END@ */ /* CFPlugIn_Instance.c - Copyright (c) 1999-2013, Apple Inc. All rights reserved. + Copyright (c) 1999-2014, Apple Inc. All rights reserved. Responsibility: Tony Parker */ @@ -57,7 +57,7 @@ static CFStringRef __CFPlugInInstanceCopyDescription(CFTypeRef cf) { static void __CFPlugInInstanceDeallocate(CFTypeRef cf) { CFPlugInInstanceRef instance = (CFPlugInInstanceRef)cf; - __CFGenericValidateType(cf, __kCFPlugInInstanceTypeID); + __CFGenericValidateType(cf, CFPlugInInstanceGetTypeID()); if (instance->deallocateInstanceDataFunction) { FAULT_CALLBACK((void **)&(instance->deallocateInstanceDataFunction)); @@ -79,11 +79,9 @@ static const CFRuntimeClass __CFPlugInInstanceClass = { __CFPlugInInstanceCopyDescription }; -CF_PRIVATE void __CFPlugInInstanceInitialize(void) { - __kCFPlugInInstanceTypeID = _CFRuntimeRegisterClass(&__CFPlugInInstanceClass); -} - CFTypeID CFPlugInInstanceGetTypeID(void) { + static dispatch_once_t initOnce; + dispatch_once(&initOnce, ^{ __kCFPlugInInstanceTypeID = _CFRuntimeRegisterClass(&__CFPlugInInstanceClass); }); return __kCFPlugInInstanceTypeID; } @@ -91,7 +89,7 @@ CF_EXPORT CFPlugInInstanceRef CFPlugInInstanceCreateWithInstanceDataSize(CFAlloc CFPlugInInstanceRef instance; UInt32 size; size = sizeof(struct __CFPlugInInstance) + instanceDataSize - sizeof(CFRuntimeBase); - instance = (CFPlugInInstanceRef)_CFRuntimeCreateInstance(allocator, __kCFPlugInInstanceTypeID, size, NULL); + instance = (CFPlugInInstanceRef)_CFRuntimeCreateInstance(allocator, CFPlugInInstanceGetTypeID(), size, NULL); if (!instance) return NULL; instance->factory = _CFPFactoryFind((CFUUIDRef)factoryName, true);