bpo-42688: Fix ffi alloc/free when using external libffi on macos (GH-23868) (GH-23888)

Automerge-Triggered-By: GH:ronaldoussoren
(cherry picked from commit b3c77ecbbe)

Co-authored-by: erykoff <erykoff@stanford.edu>
This commit is contained in:
Miss Islington (bot) 2021-01-31 21:15:23 -08:00 committed by GitHub
parent d6675fee1a
commit 7e729978fa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -91,11 +91,15 @@ 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;
@ -105,10 +109,14 @@ 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)