* gnu/packages/patches/libxml2-parent-pointers.patch, gnu/packages/patches/libxml2-terminating-newline.patch, gnu/packages/patches/libxml2-xpath-recursion-limit.patch: New files. * gnu/packages/patches/python-libxml2-python39-compat.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/xml.scm (libxml2): Update to 2.9.12. (python-lxml)[source](modules, snippet): New fields.
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
Fix a regression in 2.9.12 where serializing empty HTML documents would
 | 
						|
not add a terminating newline.
 | 
						|
 | 
						|
  https://gitlab.gnome.org/GNOME/libxml2/-/issues/266
 | 
						|
 | 
						|
Taken from upstream:
 | 
						|
 | 
						|
  https://gitlab.gnome.org/GNOME/libxml2/-/commit/92d9ab4c28842a09ca2b76d3ff2f933e01b6cd6f
 | 
						|
 | 
						|
diff --git a/HTMLtree.c b/HTMLtree.c
 | 
						|
--- a/HTMLtree.c
 | 
						|
+++ b/HTMLtree.c
 | 
						|
@@ -763,11 +763,15 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
 | 
						|
             if (((xmlDocPtr) cur)->intSubset != NULL) {
 | 
						|
                 htmlDtdDumpOutput(buf, (xmlDocPtr) cur, NULL);
 | 
						|
             }
 | 
						|
-            /* Always validate cur->parent when descending. */
 | 
						|
-            if ((cur->parent == parent) && (cur->children != NULL)) {
 | 
						|
-                parent = cur;
 | 
						|
-                cur = cur->children;
 | 
						|
-                continue;
 | 
						|
+            if (cur->children != NULL) {
 | 
						|
+                /* Always validate cur->parent when descending. */
 | 
						|
+                if (cur->parent == parent) {
 | 
						|
+                    parent = cur;
 | 
						|
+                    cur = cur->children;
 | 
						|
+                    continue;
 | 
						|
+                }
 | 
						|
+            } else {
 | 
						|
+                xmlOutputBufferWriteString(buf, "\n");
 | 
						|
             }
 | 
						|
             break;
 | 
						|
 
 |