From: Ondřej Surý Date: Fri, 4 Apr 2025 10:22:15 +0000 (+0200) Subject: Disable own memory context for libxml2 on macOS 15.4 Sequoia X-Git-Tag: v9.21.8~17^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bf1b8824ac739c172f4b84a1de8b372a4da3509f;p=thirdparty%2Fbind9.git Disable own memory context for libxml2 on macOS 15.4 Sequoia 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. --- diff --git a/lib/isc/xml.c b/lib/isc/xml.c index cbff4189046..495c2946896 100644 --- a/lib/isc/xml.c +++ b/lib/isc/xml.c @@ -19,6 +19,7 @@ #include #include +#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 */ }