Index: src/OFArray.m ================================================================== --- src/OFArray.m +++ src/OFArray.m @@ -239,20 +239,24 @@ } - (id const *)objects { size_t count = self.count; - OFMutableData *data = [OFMutableData dataWithItemSize: sizeof(id) - capacity: count]; - id *buffer; - - [data increaseCountBy: count]; - buffer = data.mutableItems; - [self getObjects: buffer - inRange: of_range(0, count)]; - - return buffer; + id *buffer = of_malloc(count, sizeof(id)); + + @try { + [self getObjects: buffer + inRange: of_range(0, count)]; + } @catch (id e) { + free(buffer); + @throw e; + } + + return [OFData dataWithItemsNoCopy: buffer + itemSize: sizeof(id) + count: count + freeWhenDone: true].items; } - (id)copy { return [self retain];