@@ -119,11 +119,14 @@ ((struct pre_ivar*)instance)->memchunks = NULL; ((struct pre_ivar*)instance)->memchunks_size = 0; ((struct pre_ivar*)instance)->retain_count = 1; #ifndef OF_ATOMIC_OPS - of_spinlock_new(&((struct pre_ivar*)instance)->retain_spinlock); + if (!of_spinlock_new(&((struct pre_ivar*)instance)->retain_spinlock)) { + free(instance); + @throw [OFInitializationFailedException newWithClass: self]; + } #endif instance = (OFObject*)((char*)instance + PRE_IVAR_ALIGN); memset(instance, 0, isize); instance->isa = self; @@ -499,13 +502,13 @@ - retain { #ifdef OF_ATOMIC_OPS of_atomic_inc32(&PRE_IVAR->retain_count); #else - of_spinlock_lock(&PRE_IVAR->retain_spinlock); + assert(of_spinlock_lock(&PRE_IVAR->retain_spinlock)); PRE_IVAR->retain_count++; - of_spinlock_unlock(&PRE_IVAR->retain_spinlock); + assert(of_spinlock_unlock(&PRE_IVAR->retain_spinlock)); #endif return self; } @@ -520,13 +523,13 @@ if (!of_atomic_dec32(&PRE_IVAR->retain_count)) [self dealloc]; #else int32_t c; - of_spinlock_lock(&PRE_IVAR->retain_spinlock); + assert(of_spinlock_lock(&PRE_IVAR->retain_spinlock)); c = --PRE_IVAR->retain_count; - of_spinlock_unlock(&PRE_IVAR->retain_spinlock); + assert(of_spinlock_unlock(&PRE_IVAR->retain_spinlock)); if (!c) [self dealloc]; #endif }