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;
 	}