Index: src/OFArray.m ================================================================== --- src/OFArray.m +++ src/OFArray.m @@ -127,24 +127,11 @@ return [array data]; } - (id)copy { - OFArray *new = [OFArray array]; - OFObject **objs; - size_t len, i; - - objs = [array data]; - len = [array count]; - - [new->array addNItems: len - fromCArray: objs]; - - for (i = 0; i < len; i++) - [objs[i] retain]; - - return new; + return [self retain]; } - (id)mutableCopy { OFArray *new = [OFMutableArray array]; Index: src/OFMutableArray.m ================================================================== --- src/OFMutableArray.m +++ src/OFMutableArray.m @@ -13,10 +13,28 @@ #import "OFMutableArray.h" #import "OFExceptions.h" @implementation OFMutableArray +- (id)copy +{ + OFArray *new = [OFArray array]; + OFObject **objs; + size_t len, i; + + objs = [array data]; + len = [array count]; + + [new->array addNItems: len + fromCArray: objs]; + + for (i = 0; i < len; i++) + [objs[i] retain]; + + return new; +} + - add: (OFObject*)obj { [array add: &obj]; [obj retain]; Index: src/OFMutableString.m ================================================================== --- src/OFMutableString.m +++ src/OFMutableString.m @@ -31,10 +31,15 @@ #ifndef HAVE_ASPRINTF #import "asprintf.h" #endif @implementation OFMutableString +- (id)copy +{ + return [OFString stringWithCString: string]; +} + - setToCString: (const char*)str { size_t len; if (string != NULL) Index: src/OFString.m ================================================================== --- src/OFString.m +++ src/OFString.m @@ -241,11 +241,11 @@ return length; } - (id)copy { - return [OFString stringWithCString: string]; + return [self retain]; } - (id)mutableCopy { return [OFMutableString stringWithCString: string];