[Python-checkins] r84535 - in python/branches/py3k: Modules/_ctypes/callbacks.c Modules/_ctypes/libffi_osx/include/ffi.h Modules/_ctypes/malloc_closure.c setup.py

ronald.oussoren python-checkins at python.org
Sun Sep 5 20:25:59 CEST 2010


Author: ronald.oussoren
Date: Sun Sep 5 20:25:59 2010
New Revision: 84535
Log:
Fix for issue9662, patch by Łukasz Langa in issue5504.
Modified:
 python/branches/py3k/Modules/_ctypes/callbacks.c
 python/branches/py3k/Modules/_ctypes/libffi_osx/include/ffi.h
 python/branches/py3k/Modules/_ctypes/malloc_closure.c
 python/branches/py3k/setup.py
Modified: python/branches/py3k/Modules/_ctypes/callbacks.c
==============================================================================
--- python/branches/py3k/Modules/_ctypes/callbacks.c	(original)
+++ python/branches/py3k/Modules/_ctypes/callbacks.c	Sun Sep 5 20:25:59 2010
@@ -416,9 +416,13 @@
 "ffi_prep_cif failed with %d", result);
 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,
 				 p,
 				 p->pcl_exec);
+#endif
 if (result != FFI_OK) {
 PyErr_Format(PyExc_RuntimeError,
 "ffi_prep_closure failed with %d", result);
Modified: python/branches/py3k/Modules/_ctypes/libffi_osx/include/ffi.h
==============================================================================
--- python/branches/py3k/Modules/_ctypes/libffi_osx/include/ffi.h	(original)
+++ python/branches/py3k/Modules/_ctypes/libffi_osx/include/ffi.h	Sun Sep 5 20:25:59 2010
@@ -264,6 +264,9 @@
 	void			(*fun)(ffi_cif*,void*,void**,void*),
 	void*			user_data);
 
+void ffi_closure_free(void *);
+void *ffi_closure_alloc (size_t size, void **code);
+
 typedef struct ffi_raw_closure {
 	char		tramp[FFI_TRAMPOLINE_SIZE];
 	ffi_cif*	cif;
@@ -349,4 +352,4 @@
 }
 #endif
 
-#endif	// #ifndef LIBFFI_H
\ No newline at end of file
+#endif	// #ifndef LIBFFI_H
Modified: python/branches/py3k/Modules/_ctypes/malloc_closure.c
==============================================================================
--- python/branches/py3k/Modules/_ctypes/malloc_closure.c	(original)
+++ python/branches/py3k/Modules/_ctypes/malloc_closure.c	Sun Sep 5 20:25:59 2010
@@ -106,7 +106,6 @@
 return NULL;
 item = free_list;
 free_list = item->next;
-	*codeloc = (void *)item;
+ *codeloc = (void *)item;
 return (void *)item;
 }
-
Modified: python/branches/py3k/setup.py
==============================================================================
--- python/branches/py3k/setup.py	(original)
+++ python/branches/py3k/setup.py	Sun Sep 5 20:25:59 2010
@@ -1657,6 +1657,7 @@
 depends = ['_ctypes/ctypes.h']
 
 if sys.platform == 'darwin':
+ sources.append('_ctypes/malloc_closure.c')
 sources.append('_ctypes/darwin/dlfcn_simple.c')
 extra_compile_args.append('-DMACOSX')
 include_dirs.append('_ctypes/darwin')


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /