mirror of
https://github.com/python/cpython.git
synced 2025-08-15 06:10:47 +00:00
Merged revisions 84535 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r84535 | ronald.oussoren | 2010-09-05 20:25:59 +0200 (Sun, 05 Sep 2010) | 2 lines Fix for issue9662, patch by Łukasz Langa in issue5504. ........
This commit is contained in:
parent
19f9810a1a
commit
30a171fcb6
4 changed files with 10 additions and 3 deletions
|
@ -469,9 +469,13 @@ CThunkObject *_ctypes_alloc_callback(PyObject *callable,
|
||||||
"ffi_prep_cif failed with %d", result);
|
"ffi_prep_cif failed with %d", result);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
#if defined(X86_DARWIN) || defined(POWERPC_DARWIN)
|
||||||
|
result = ffi_prep_closure(p->pcl_write, &p->cif, closure_fcn, p);
|
||||||
|
#else
|
||||||
result = ffi_prep_closure_loc(p->pcl_write, &p->cif, closure_fcn,
|
result = ffi_prep_closure_loc(p->pcl_write, &p->cif, closure_fcn,
|
||||||
p,
|
p,
|
||||||
p->pcl_exec);
|
p->pcl_exec);
|
||||||
|
#endif
|
||||||
if (result != FFI_OK) {
|
if (result != FFI_OK) {
|
||||||
PyErr_Format(PyExc_RuntimeError,
|
PyErr_Format(PyExc_RuntimeError,
|
||||||
"ffi_prep_closure failed with %d", result);
|
"ffi_prep_closure failed with %d", result);
|
||||||
|
|
|
@ -264,6 +264,9 @@ ffi_prep_closure(
|
||||||
void (*fun)(ffi_cif*,void*,void**,void*),
|
void (*fun)(ffi_cif*,void*,void**,void*),
|
||||||
void* user_data);
|
void* user_data);
|
||||||
|
|
||||||
|
void ffi_closure_free(void *);
|
||||||
|
void *ffi_closure_alloc (size_t size, void **code);
|
||||||
|
|
||||||
typedef struct ffi_raw_closure {
|
typedef struct ffi_raw_closure {
|
||||||
char tramp[FFI_TRAMPOLINE_SIZE];
|
char tramp[FFI_TRAMPOLINE_SIZE];
|
||||||
ffi_cif* cif;
|
ffi_cif* cif;
|
||||||
|
@ -349,4 +352,4 @@ ffi_call(
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // #ifndef LIBFFI_H
|
#endif // #ifndef LIBFFI_H
|
||||||
|
|
|
@ -110,7 +110,6 @@ void *ffi_closure_alloc(size_t ignored, void** codeloc)
|
||||||
return NULL;
|
return NULL;
|
||||||
item = free_list;
|
item = free_list;
|
||||||
free_list = item->next;
|
free_list = item->next;
|
||||||
*codeloc = (void *)item;
|
*codeloc = (void *)item;
|
||||||
return (void *)item;
|
return (void *)item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
1
setup.py
1
setup.py
|
@ -1875,6 +1875,7 @@ class PyBuildExt(build_ext):
|
||||||
depends = ['_ctypes/ctypes.h']
|
depends = ['_ctypes/ctypes.h']
|
||||||
|
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
|
sources.append('_ctypes/malloc_closure.c')
|
||||||
sources.append('_ctypes/darwin/dlfcn_simple.c')
|
sources.append('_ctypes/darwin/dlfcn_simple.c')
|
||||||
extra_compile_args.append('-DMACOSX')
|
extra_compile_args.append('-DMACOSX')
|
||||||
include_dirs.append('_ctypes/darwin')
|
include_dirs.append('_ctypes/darwin')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue