1From 502971cc23e0ebb2677124b41b70c321c6dd5c02 Mon Sep 17 00:00:00 2001 2From: Nick Wellnhofer <wellnhofer@aevum.de> 3Date: Fri, 1 Dec 2023 17:49:48 +0100 4Subject: [PATCH] tree: Another fix related to #538 5 6Should fix #639. 7--- 8 tree.c | 4 ++++ 9 1 file changed, 4 insertions(+) 10 11diff --git a/tree.c b/tree.c 12index 35dabb97c..dc3ac4f92 100644 13--- a/tree.c 14+++ b/tree.c 15@@ -4379,6 +4379,7 @@ xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent) { 16 xmlNodePtr ret = NULL; 17 xmlNodePtr p = NULL,q; 18 xmlDtdPtr newSubset = NULL; 19+ int linkedSubset = 0; 20 21 while (node != NULL) { 22 #ifdef LIBXML_TREE_ENABLED 23@@ -4395,6 +4396,7 @@ xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent) { 24 newSubset = (xmlDtdPtr) q; 25 xmlAddChild(parent, q); 26 } else { 27+ linkedSubset = 1; 28 q = (xmlNodePtr) doc->intSubset; 29 xmlAddChild(parent, q); 30 } 31@@ -4417,6 +4419,8 @@ xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent) { 32 doc->intSubset = newSubset; 33 return(ret); 34 error: 35+ if (linkedSubset != 0) 36+ xmlUnlinkNode((xmlNodePtr) doc->intSubset); 37 xmlFreeNodeList(ret); 38 return(NULL); 39 } 40-- 41GitLab 42 43