From bf1b8824ac739c172f4b84a1de8b372a4da3509f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Fri, 4 Apr 2025 12:22:15 +0200 Subject: [PATCH] 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. --- lib/isc/xml.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/isc/xml.c b/lib/isc/xml.c index cbff418904..495c294689 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 */ }