diff -r fa54e3a1250a -r aeda47714978 libidav/xml.c --- a/libidav/xml.c Wed Mar 20 10:23:39 2019 +0100 +++ b/libidav/xml.c Wed Mar 20 13:20:38 2019 +0100 @@ -251,7 +251,26 @@ } - +DavXmlAttr* dav_copy_xml_attr(DavXmlAttr *attr) { + if(!attr) { + return NULL; + } + DavXmlAttr *newattr = NULL; + DavXmlAttr *prev = NULL; + while(attr) { + DavXmlAttr *n = calloc(1, sizeof(DavXmlAttr)); + n->name = strdup(attr->name); + n->value = strdup(attr->value); + if(prev) { + prev->next = n; + } else { + newattr = n; + } + prev = n; + attr = attr->next; + } + return newattr; +} DavXmlNode* dav_copy_node(DavXmlNode *node) { DavXmlNode *ret = NULL; @@ -263,6 +282,7 @@ copy->namespace = strdup(node->namespace); copy->name = strdup(node->name); copy->children = dav_copy_node(node->children); + copy->attributes = dav_copy_xml_attr(node->attributes); } else { copy->contentlength = node->contentlength; copy->content = malloc(node->contentlength+1);