From f4e562980917086caf3f7a8217ac9f72ebf3ccb4 Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Tue, 28 Oct 2003 14:27:41 +0000 Subject: [PATCH] applied patch from Kasimier Buchcik which fixes a problem in xmlSearchNs * tree.c: applied patch from Kasimier Buchcik which fixes a problem in xmlSearchNs introduced in 2.6.0 Damniel --- ChangeLog | 5 +++++ tree.c | 40 +++++++++++++++++++++++----------------- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 10c9b284..648396af 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Oct 28 15:26:18 CET 2003 Daniel Veillard + + * tree.c: applied patch from Kasimier Buchcik which fixes a + problem in xmlSearchNs introduced in 2.6.0 + Tue Oct 28 14:57:03 CET 2003 Daniel Veillard * parser.c: fixed #123263, the encoding is mandatory in a textdecl. diff --git a/tree.c b/tree.c index 5847f5cb..e9d50e76 100644 --- a/tree.c +++ b/tree.c @@ -5292,7 +5292,9 @@ xmlGetNsList(xmlDocPtr doc ATTRIBUTE_UNUSED, xmlNodePtr node) */ xmlNsPtr xmlSearchNs(xmlDocPtr doc, xmlNodePtr node, const xmlChar *nameSpace) { + xmlNsPtr cur; + xmlNodePtr orig = node; if (node == NULL) return(NULL); if ((nameSpace != NULL) && @@ -5350,16 +5352,18 @@ xmlSearchNs(xmlDocPtr doc, xmlNodePtr node, const xmlChar *nameSpace) { return(cur); cur = cur->next; } - cur = node->ns; - if (cur != NULL) { - if ((cur->prefix == NULL) && (nameSpace == NULL) && - (cur->href != NULL)) - return(cur); - if ((cur->prefix != NULL) && (nameSpace != NULL) && - (cur->href != NULL) && - (xmlStrEqual(cur->prefix, nameSpace))) - return(cur); - } + if (orig != node) { + cur = node->ns; + if (cur != NULL) { + if ((cur->prefix == NULL) && (nameSpace == NULL) && + (cur->href != NULL)) + return(cur); + if ((cur->prefix != NULL) && (nameSpace != NULL) && + (cur->href != NULL) && + (xmlStrEqual(cur->prefix, nameSpace))) + return(cur); + } + } } node = node->parent; } @@ -5482,14 +5486,16 @@ xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node, const xmlChar * href) } cur = cur->next; } - cur = node->ns; - if (cur != NULL) { - if ((cur->href != NULL) && (href != NULL) && - (xmlStrEqual(cur->href, href))) { - if (xmlNsInScope(doc, orig, node, cur->href) == 1) - return (cur); + if (orig != node) { + cur = node->ns; + if (cur != NULL) { + if ((cur->href != NULL) && (href != NULL) && + (xmlStrEqual(cur->href, href))) { + if (xmlNsInScope(doc, orig, node, cur->href) == 1) + return (cur); + } } - } + } } node = node->parent; }