]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Disable own memory context for libxml2 on macOS 15.4 Sequoia
authorOndřej Surý <ondrej@isc.org>
Fri, 4 Apr 2025 10:22:15 +0000 (12:22 +0200)
committerOndřej Surý <ondrej@isc.org>
Fri, 18 Apr 2025 19:00:52 +0000 (21:00 +0200)
The custom allocation API for libxml2 is deprecated starting in macOS
Sequoia 15.4, iOS 18.4, tvOS 18.4, visionOS 2.4, and tvOS 18.4.

Disable the memory function override for libxml2 when
LIBXML_HAS_DEPRECATED_MEMORY_ALLOCATION_FUNCTIONS is defined as Apple
broke the system-wide libxml2 starting with macOS Sequoia 15.4.

(cherry picked from commit bf1b8824ac739c172f4b84a1de8b372a4da3509f)

lib/isc/xml.c

index 7dd9424fe5226ea7352b9f9e7bf1e141aa3c826e..859f35a173048dea571bb23fb9d5e7dbb0f7d36f 100644 (file)
@@ -19,6 +19,7 @@
 #include <libxml/parser.h>
 #include <libxml/xmlversion.h>
 
+#ifndef LIBXML_HAS_DEPRECATED_MEMORY_ALLOCATION_FUNCTIONS
 static isc_mem_t *isc__xml_mctx = NULL;
 
 static void *
@@ -44,17 +45,20 @@ isc__xml_free(void *ptr) {
        isc_mem_free(isc__xml_mctx, ptr);
 }
 
+#endif /* !LIBXML_HAS_DEPRECATED_MEMORY_ALLOCATION_FUNCTIONS) */
 #endif /* HAVE_LIBXML2 */
 
 void
 isc__xml_initialize(void) {
 #ifdef HAVE_LIBXML2
+#ifndef LIBXML_HAS_DEPRECATED_MEMORY_ALLOCATION_FUNCTIONS
        isc_mem_create(&isc__xml_mctx);
        isc_mem_setname(isc__xml_mctx, "libxml2");
        isc_mem_setdestroycheck(isc__xml_mctx, false);
 
        RUNTIME_CHECK(xmlMemSetup(isc__xml_free, isc__xml_malloc,
                                  isc__xml_realloc, isc__xml_strdup) == 0);
+#endif /* !LIBXML_HAS_DEPRECATED_MEMORY_ALLOCATION_FUNCTIONS */
 
        xmlInitParser();
 #endif /* HAVE_LIBXML2 */
@@ -64,15 +68,18 @@ void
 isc__xml_shutdown(void) {
 #ifdef HAVE_LIBXML2
        xmlCleanupParser();
+
+#ifndef LIBXML_HAS_DEPRECATED_MEMORY_ALLOCATION_FUNCTIONS
        isc_mem_destroy(&isc__xml_mctx);
+#endif /* !LIBXML_HAS_DEPRECATED_MEMORY_ALLOCATION_FUNCTIONS */
 #endif /* HAVE_LIBXML2 */
 }
 
 void
-isc__xml_setdestroycheck(bool check) {
-#if HAVE_LIBXML2
+isc__xml_setdestroycheck(bool check ISC_ATTR_UNUSED) {
+#ifdef HAVE_LIBXML2
+#ifndef LIBXML_HAS_DEPRECATED_MEMORY_ALLOCATION_FUNCTIONS
        isc_mem_setdestroycheck(isc__xml_mctx, check);
-#else
-       UNUSED(check);
-#endif
+#endif /* LIBXML_HAS_DEPRECATED_MEMORY_ALLOCATION_FUNCTIONS */
+#endif /* HAVE_LIBXML2 */
 }