@@ -1079,14 +1079,12 @@ - initWithSerialization: (OFXMLElement*)element { @try { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; - if (![[element name] isEqual: @"object"] || - ![[element namespace] isEqual: OF_SERIALIZATION_NS] || - ![[[element attributeForName: @"class"] stringValue] - isEqual: [self className]]) + if (![[element name] isEqual: [self className]] || + ![[element namespace] isEqual: OF_SERIALIZATION_NS]) @throw [OFInvalidArgumentException newWithClass: isa selector: _cmd]; self = [self initWithString: [element stringValue]]; @@ -1271,27 +1269,29 @@ return [[self copy] autorelease]; } - (OFXMLElement*)XMLElementBySerializing { - OFAutoreleasePool *pool; + OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; OFXMLElement *element; + OFString *className; - element = [OFXMLElement elementWithName: @"object" + if ([self isKindOfClass: [OFConstantString class]]) + className = @"OFString"; + else + className = [self className]; + + element = [OFXMLElement elementWithName: className namespace: OF_SERIALIZATION_NS stringValue: self]; - pool = [[OFAutoreleasePool alloc] init]; - - if ([self isKindOfClass: [OFConstantString class]]) - [element addAttributeWithName: @"class" - stringValue: @"OFString"]; - else - [element addAttributeWithName: @"class" - stringValue: [self className]]; - - [pool release]; + [element retain]; + @try { + [pool release]; + } @finally { + [element autorelease]; + } return element; } - (of_unichar_t)characterAtIndex: (size_t)index