@@ -383,14 +383,16 @@ - (size_t)retainCount { return PRE_IVAR->retain_count; } -- (void)release +- release { if (!--PRE_IVAR->retain_count) - [self free]; + return [self free]; + + return self; } - free { void **iter = PRE_IVAR->memchunks + PRE_IVAR->memchunks_size;