@@ -458,18 +458,14 @@ [ret appendString: [cArray[i] stringValue]]; [pool releaseObjects]; } } + [ret makeImmutable]; + [pool release]; - /* - * Class swizzle the string to be immutable. We declared the return type - * to be OFString*, so it can't be modified anyway. But not swizzling it - * would create a real copy each time -[copy] is called. - */ - ret->isa = [OFString class]; return ret; } - (intmax_t)decimalValue { @@ -1034,11 +1030,13 @@ for (i = 0; i < count; i++) if (cArray[i]->name != nil) [ret addObject: cArray[i]]; - return [ret makeImmutable]; + [ret makeImmutable]; + + return ret; } - (OFArray*)elementsForName: (OFString*)elementName { OFMutableArray *ret = [OFMutableArray array]; @@ -1048,11 +1046,13 @@ for (i = 0; i < count; i++) if (cArray[i]->ns == nil && [cArray[i]->name isEqual: elementName]) [ret addObject: cArray[i]]; - return [ret makeImmutable]; + [ret makeImmutable]; + + return ret; } - (OFArray*)elementsForNamespace: (OFString*)elementNS { OFMutableArray *ret = [OFMutableArray array]; @@ -1062,11 +1062,13 @@ for (i = 0; i < count; i++) if (cArray[i]->name != nil && [cArray[i]->ns isEqual: elementNS]) [ret addObject: cArray[i]]; - return [ret makeImmutable]; + [ret makeImmutable]; + + return ret; } - (OFArray*)elementsForName: (OFString*)elementName namespace: (OFString*)elementNS { @@ -1084,11 +1086,13 @@ for (i = 0; i < count; i++) if ([cArray[i]->ns isEqual: elementNS] && [cArray[i]->name isEqual: elementName]) [ret addObject: cArray[i]]; - return [ret makeImmutable]; + [ret makeImmutable]; + + return ret; } - (BOOL)isEqual: (id)object { OFXMLElement *otherElement;