Index: src/macros.h ================================================================== --- src/macros.h +++ src/macros.h @@ -98,11 +98,11 @@ #else # define OF_PATH_DELIMITER '\\' #endif extern id objc_getProperty(id, SEL, ptrdiff_t, BOOL); -extern void objc_setProperty(id, SEL, ptrdiff_t, id, BOOL, BOOL); +extern void objc_setProperty(id, SEL, ptrdiff_t, id, BOOL, signed char); #define OF_IVAR_OFFSET(ivar) ((intptr_t)&ivar - (intptr_t)self) #define OF_GETTER(ivar, atomic) \ return objc_getProperty(self, _cmd, OF_IVAR_OFFSET(ivar), atomic); #define OF_SETTER(ivar, value, atomic, copy) \ Index: src/objc_properties.m ================================================================== --- src/objc_properties.m +++ src/objc_properties.m @@ -64,11 +64,11 @@ return *(id*)(void*)((char*)self + offset); } void objc_setProperty(id self, SEL _cmd, ptrdiff_t offset, id value, BOOL atomic, - BOOL copy) + signed char copy) { if (atomic) { id *ptr = (id*)(void*)((char*)self + offset); #ifdef OF_THREADS unsigned hash = SPINLOCK_HASH(ptr); @@ -82,15 +82,10 @@ switch (copy) { case 0: *ptr = [value retain]; break; case 2: - /* - * Apple uses this to indicate that the copy - * should be mutable. Please hit them for - * abusing a poor BOOL! - */ *ptr = [value mutableCopy]; break; default: *ptr = [value copy]; }