Avoid string allocation in dom_get_dom1_attribute() for as long as possible

This commit is contained in:
Niels Dossche 2023-07-13 13:31:31 +02:00
parent 66e2aa7255
commit 9880c336be

View file

@ -159,8 +159,7 @@ static xmlNodePtr dom_get_dom1_attribute(xmlNodePtr elem, xmlChar *name) /* {{{
nqname = xmlSplitQName3(name, &len); nqname = xmlSplitQName3(name, &len);
if (nqname != NULL) { if (nqname != NULL) {
xmlNsPtr ns; xmlNsPtr ns;
xmlChar *prefix = xmlStrndup(name, len); if (strncmp((const char *) name, "xmlns:", len + 1) == 0) {
if (prefix && xmlStrEqual(prefix, (xmlChar *)"xmlns")) {
ns = elem->nsDef; ns = elem->nsDef;
while (ns) { while (ns) {
if (xmlStrEqual(ns->prefix, nqname)) { if (xmlStrEqual(ns->prefix, nqname)) {
@ -168,9 +167,9 @@ static xmlNodePtr dom_get_dom1_attribute(xmlNodePtr elem, xmlChar *name) /* {{{
} }
ns = ns->next; ns = ns->next;
} }
xmlFree(prefix);
return (xmlNodePtr)ns; return (xmlNodePtr)ns;
} }
xmlChar *prefix = xmlStrndup(name, len);
ns = xmlSearchNs(elem->doc, elem, prefix); ns = xmlSearchNs(elem->doc, elem, prefix);
if (prefix != NULL) { if (prefix != NULL) {
xmlFree(prefix); xmlFree(prefix);