Index: src/OFObject.m ================================================================== --- src/OFObject.m +++ src/OFObject.m @@ -981,12 +981,17 @@ } - (void)release { #if defined(OF_HAVE_ATOMIC_OPS) - if (of_atomic_int_dec(&PRE_IVARS->retainCount) <= 0) + of_memory_barrier_release(); + + if (of_atomic_int_dec(&PRE_IVARS->retainCount) <= 0) { + of_memory_barrier_acquire(); + [self dealloc]; + } #else size_t c; OF_ENSURE(of_spinlock_lock(&PRE_IVARS->retainCountSpinlock)); c = --PRE_IVARS->retainCount;