Index: src/OFArray.m ================================================================== --- src/OFArray.m +++ src/OFArray.m @@ -95,32 +95,24 @@ - initWithObject: (OFObject*)first andArgList: (va_list)args { id obj; - OFObject **objs; - size_t len, i; self = [self init]; @try { [array add: &first]; - while ((obj = va_arg(args, id)) != nil) + while ((obj = va_arg(args, id)) != nil) { [array add: &obj]; + [obj retain]; + } } @catch (OFException *e) { [self dealloc]; @throw e; } - /* Retain objects after adding them for the case adding failed */ - objs = [array data]; - len = [array count]; - - [first retain]; - for (i = 0; i < len; i++) - [objs[i] retain]; - return self; } - initWithCArray: (OFObject**)objs { @@ -127,21 +119,19 @@ id *obj; self = [self init]; @try { - for (obj = objs; *obj != nil; obj++) + for (obj = objs; *obj != nil; obj++) { [array add: obj]; + [*obj retain]; + } } @catch (OFException *e) { [self dealloc]; @throw e; } - /* Retain objects after adding them for the case adding failed */ - for (obj = objs; *obj != nil; obj++) - [*obj retain]; - return self; } - (size_t)count {