fixing a leak detected by testapi in xmlDOMWrapAdoptNode, and fixing
* testapi.c tree.c: fixing a leak detected by testapi in
xmlDOMWrapAdoptNode, and fixing another side effect in testapi
seems to pass tests fine now.
Daniel
diff --git a/tree.c b/tree.c
index 0e51cbc..d2590ed 100644
--- a/tree.c
+++ b/tree.c
@@ -7441,7 +7441,11 @@
#define XML_TREE_ADOPT_STR(str) \
if (adoptStr && (str != NULL)) { \
if (destDoc->dict) { \
+ const xmlChar *old = str; \
str = xmlDictLookup(destDoc->dict, str, -1); \
+ if ((sourceDoc == NULL) || (sourceDoc->dict == NULL) || \
+ (!xmlDictOwns(sourceDoc->dict, old))) \
+ xmlFree(old); \
} else if ((sourceDoc) && (sourceDoc->dict) && \
xmlDictOwns(sourceDoc->dict, str)) { \
str = BAD_CAST xmlStrdup(str); \
@@ -8680,10 +8684,11 @@
}
XML_TREE_ADOPT_STR(node->name)
break;
- case XML_PI_NODE:
+ case XML_PI_NODE: {
XML_TREE_ADOPT_STR(node->name)
XML_TREE_ADOPT_STR_2(node->content)
break;
+ }
default:
break;
}