Index: src/OFConstString.m ================================================================== --- src/OFConstString.m +++ src/OFConstString.m @@ -79,12 +79,13 @@ - retain { return self; } -- (void)release +- release { + return self; } - (size_t)retainCount { return 1; Index: src/OFObject.h ================================================================== --- src/OFObject.h +++ src/OFObject.h @@ -196,12 +196,12 @@ - (size_t)retainCount; /** * Decreases the retain cound and frees the object if it reaches 0. */ -- (void)release; +- release; /** * Frees the object and also frees all memory allocated via its memory pool. */ - free; @end Index: src/OFObject.m ================================================================== --- src/OFObject.m +++ src/OFObject.m @@ -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;