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.
This commit is contained in:
Ondřej Surý 2025-04-04 12:22:15 +02:00
parent 7211ba147a
commit bf1b8824ac
No known key found for this signature in database
GPG key ID: 2820F37E873DEA41

View 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 */
}