mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 00:11:26 +00:00
backport fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29787 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
1a6af09e33
commit
837d04cc56
4 changed files with 131 additions and 89 deletions
|
@ -53,19 +53,32 @@ findLockClass(id obj)
|
|||
static inline Class
|
||||
initLockObject(id obj)
|
||||
{
|
||||
char nameBuffer[40];
|
||||
Class lockClass;
|
||||
const char *types;
|
||||
pthread_mutex_t *lock;
|
||||
pthread_mutexattr_t attr;
|
||||
|
||||
snprintf(nameBuffer, 39, "hiddenlockClass%lld", lockClassId++);
|
||||
lockClass = objc_allocateClassPair(obj->isa, nameBuffer,
|
||||
sizeof(pthread_mutex_t));
|
||||
if (class_isMetaClass(obj->isa))
|
||||
{
|
||||
lockClass = objc_allocateMetaClass(obj, sizeof(pthread_mutex_t));
|
||||
}
|
||||
else
|
||||
{
|
||||
char nameBuffer[40];
|
||||
|
||||
snprintf(nameBuffer, 39, "hiddenlockClass%lld", lockClassId++);
|
||||
lockClass = objc_allocateClassPair(obj->isa, nameBuffer,
|
||||
sizeof(pthread_mutex_t));
|
||||
}
|
||||
|
||||
types = method_getTypeEncoding(class_getInstanceMethod(obj->isa,
|
||||
@selector(dealloc)));
|
||||
class_addMethod(lockClass, @selector(dealloc), (IMP)deallocLockClass, types);
|
||||
objc_registerClassPair(lockClass);
|
||||
|
||||
if (!class_isMetaClass(obj->isa))
|
||||
{
|
||||
objc_registerClassPair(lockClass);
|
||||
}
|
||||
|
||||
lock = object_getIndexedIvars(lockClass);
|
||||
pthread_mutexattr_init(&attr);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue