summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorerykoff <erykoff@stanford.edu>2020-12-22 11:12:07 (GMT)
committerGitHub <noreply@github.com>2020-12-22 11:12:07 (GMT)
commitb3c77ecbbe0ad3e3cc6dbd885792203e9e6ec858 (patch)
treef8b4135dcaf8d0334b31b819eed1ca9b59a10349
parentfbc7723778be01b8f3bb72d2dcac15ab9fbb9923 (diff)
downloadcpython-b3c77ecbbe0ad3e3cc6dbd885792203e9e6ec858.zip
cpython-b3c77ecbbe0ad3e3cc6dbd885792203e9e6ec858.tar.gz
cpython-b3c77ecbbe0ad3e3cc6dbd885792203e9e6ec858.tar.bz2
bpo-42688: Fix ffi alloc/free when using external libffi on macos (GH-23868)
Automerge-Triggered-By: GH:ronaldoussoren
-rw-r--r--Modules/_ctypes/malloc_closure.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/Modules/_ctypes/malloc_closure.c b/Modules/_ctypes/malloc_closure.c
index 4f220e4..788bae6 100644
--- a/Modules/_ctypes/malloc_closure.c
+++ b/Modules/_ctypes/malloc_closure.c
@@ -91,12 +91,16 @@ static void more_core(void)
/* put the item back into the free list */
void Py_ffi_closure_free(void *p)
{
-#if USING_APPLE_OS_LIBFFI && HAVE_FFI_CLOSURE_ALLOC
+#if HAVE_FFI_CLOSURE_ALLOC
+#if USING_APPLE_OS_LIBFFI
if (__builtin_available(macos 10.15, ios 13, watchos 6, tvos 13, *)) {
+#endif
ffi_closure_free(p);
return;
+#if USING_APPLE_OS_LIBFFI
}
#endif
+#endif
ITEM *item = (ITEM *)p;
item->next = free_list;
free_list = item;
@@ -105,11 +109,15 @@ void Py_ffi_closure_free(void *p)
/* return one item from the free list, allocating more if needed */
void *Py_ffi_closure_alloc(size_t size, void** codeloc)
{
-#if USING_APPLE_OS_LIBFFI && HAVE_FFI_CLOSURE_ALLOC
+#if HAVE_FFI_CLOSURE_ALLOC
+#if USING_APPLE_OS_LIBFFI
if (__builtin_available(macos 10.15, ios 13, watchos 6, tvos 13, *)) {
+#endif
return ffi_closure_alloc(size, codeloc);
+#if USING_APPLE_OS_LIBFFI
}
#endif
+#endif
ITEM *item;
if (!free_list)
more_core();