Index: src/objc_properties.m ================================================================== --- src/objc_properties.m +++ src/objc_properties.m @@ -14,10 +14,12 @@ * file. */ #include "config.h" +#include + #include #import "OFObject.h" #ifdef OF_THREADS @@ -118,5 +120,52 @@ *ptr = [value copy]; } [old release]; } + +/* The following methods are only required for GCC >= 4.6 */ +void +objc_getPropertyStruct(void *dest, const void *src, ptrdiff_t size, BOOL atomic, + BOOL strong) +{ + if (atomic) { +#ifdef OF_THREADS + unsigned hash = SPINLOCK_HASH(src); + + assert(of_spinlock_lock(&spinlocks[hash])); +#endif + + memcpy(dest, src, size); + +#ifdef OF_THREADS + assert(of_spinlock_unlock(&spinlocks[hash])); +#endif + + return; + } + + memcpy(dest, src, size); +} + +void +objc_setPropertyStruct(void *dest, const void *src, ptrdiff_t size, BOOL atomic, + BOOL strong) +{ + if (atomic) { +#ifdef OF_THREADS + unsigned hash = SPINLOCK_HASH(src); + + assert(of_spinlock_lock(&spinlocks[hash])); +#endif + + memcpy(dest, src, size); + +#ifdef OF_THREADS + assert(of_spinlock_unlock(&spinlocks[hash])); +#endif + + return; + } + + memcpy(dest, src, size); +}