]> 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 18:16:13 +0000 (20:16 +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.

lib/isc/xml.c

index cbff418904683b8316d7287602f91fba5ba3cb12..495c2946896494fe91891febc27f7bb1c485f362 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_detach(&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 */
 }