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