diff --git a/ChangeLog b/ChangeLog index c3aa8fadb..87167934b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-02-26 Fred Kiefer + + * Source/NSXMLNode.m (+elementWithName:stringValue:): Correct + recursive call. + Patch by Ivan Vučica + * Source/NSXMLElement.m: Add FIXME comments for name space methods. + 2012-02-23 Fred Kiefer * Source/NSXMLElement.m: Implement namespace methods. diff --git a/Source/NSXMLElement.m b/Source/NSXMLElement.m index 6b5035945..c30da6207 100644 --- a/Source/NSXMLElement.m +++ b/Source/NSXMLElement.m @@ -351,6 +351,7 @@ extern void clearPrivatePointers(xmlNodePtr aNode); - (NSArray*) namespaces { + // FIXME: Should use xmlGetNsList() NSMutableArray *result = nil; xmlNsPtr ns = MY_NODE->ns; @@ -369,8 +370,8 @@ extern void clearPrivatePointers(xmlNodePtr aNode); - (NSXMLNode*) namespaceForPrefix: (NSString*)name { + // FIXME: Should use xmlSearchNs() xmlNsPtr ns = MY_NODE->ns; - if (ns) { const xmlChar *prefix = XMLSTRING(name); @@ -401,6 +402,7 @@ extern void clearPrivatePointers(xmlNodePtr aNode); - (NSString*) resolvePrefixForNamespaceURI: (NSString*)namespaceURI { + // FIXME Should use xmlSearchNsByHref() xmlNsPtr ns = MY_NODE->ns; if (ns) diff --git a/Source/NSXMLNode.m b/Source/NSXMLNode.m index 1d91b4707..31bdfed63 100644 --- a/Source/NSXMLNode.m +++ b/Source/NSXMLNode.m @@ -160,6 +160,9 @@ BOOL isEqualNode(xmlNodePtr nodeA, xmlNodePtr nodeB) BOOL isEqualTree(xmlNodePtr nodeA, xmlNodePtr nodeB) { + xmlNodePtr childA; + xmlNodePtr childB; + if (nodeA == nodeB) { return YES; @@ -175,17 +178,23 @@ BOOL isEqualTree(xmlNodePtr nodeA, xmlNodePtr nodeB) return NO; } - if (!isEqualTree(nodeA->children, nodeB->children)) + // Check children + childA = nodeA->children; + childB = nodeB->children; + while (isEqualTree(childA, childB)) { - return NO; + if (childA == NULL) + { + return YES; + } + else + { + childA = childA->next; + childB = childB->next; + } } - if (!isEqualTree(nodeA->next, nodeB->next)) - { - return NO; - } - - return YES; + return NO; } // Private methods to manage libxml pointers... @@ -748,7 +757,7 @@ NSArray *execute_xpath(NSXMLNode *node, { NSXMLElement *e; - e = [self elementWithName: name stringValue: string]; + e = [[NSXMLElement alloc] initWithName: name stringValue: string]; return e; }