@@ -23,11 +23,11 @@ #import "OFDictionary.h" #import "OFDictionary_hashtable.h" #import "OFArray.h" #import "OFString.h" #import "OFXMLElement.h" -#import "OFDataArray.h" +#import "OFData.h" #import "OFInvalidArgumentException.h" #import "OFOutOfRangeException.h" #import "OFUndefinedKeyException.h" @@ -733,19 +733,19 @@ objc_autoreleasePoolPop(pool); return JSON; } -- (OFDataArray *)messagePackRepresentation +- (OFData *)messagePackRepresentation { - OFDataArray *data; + OFMutableData *data; size_t i, count; void *pool; OFEnumerator *keyEnumerator, *objectEnumerator; id key, object; - data = [OFDataArray dataArray]; + data = [OFMutableData data]; count = [self count]; if (count <= 15) { uint8_t tmp = 0x80 | ((uint8_t)count & 0xF); [data addItem: &tmp]; @@ -772,11 +772,11 @@ keyEnumerator = [self keyEnumerator]; objectEnumerator = [self objectEnumerator]; while ((key = [keyEnumerator nextObject]) != nil && (object = [objectEnumerator nextObject]) != nil) { void *pool2 = objc_autoreleasePoolPush(); - OFDataArray *child; + OFData *child; i++; child = [key messagePackRepresentation]; [data addItems: [child items] @@ -788,11 +788,13 @@ objc_autoreleasePoolPop(pool2); } assert(i == count); + + [data makeImmutable]; objc_autoreleasePoolPop(pool); return data; } @end