@@ -42,11 +42,18 @@ @implementation OFXMLElement_OFXMLElementBuilderDelegate - (void)elementBuilder: (OFXMLElementBuilder*)builder didBuildElement: (OFXMLElement*)elem { - element = [elem retain]; + /* + * Make sure we don't take whitespaces before or after the root element + * into account. + */ + if ([elem name] != nil) { + assert(element == nil); + element = [elem retain]; + } } - (void)dealloc { [element release]; @@ -212,11 +219,13 @@ { OFAutoreleasePool *pool; OFXMLParser *parser; OFXMLElementBuilder *builder; OFXMLElement_OFXMLElementBuilderDelegate *delegate; + Class c; + c = isa; [self release]; pool = [[OFAutoreleasePool alloc] init]; parser = [OFXMLParser parser]; @@ -228,11 +237,11 @@ [builder setDelegate: delegate]; [parser parseString: str]; if (![parser finishedParsing]) - @throw [OFMalformedXMLException newWithClass: isa + @throw [OFMalformedXMLException newWithClass: c parser: parser]; self = [delegate->element retain]; @try { @@ -753,10 +762,11 @@ - (void)dealloc { [name release]; [ns release]; + [defaultNamespace release]; [attributes release]; [namespaces release]; [children release]; [characters release]; [cdata release];