diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-08-10 00:22:01 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-08-10 00:22:01 (GMT) |
commit | e647b4766d93c8dc93f936047990f9e836adc229 (patch) | |
tree | 981b1f990058bed6184d6b31cb238544fe532493 /Modules/_ctypes | |
parent | bd25d598a54dc57271e009918977815377babda0 (diff) | |
download | cpython-e647b4766d93c8dc93f936047990f9e836adc229.zip cpython-e647b4766d93c8dc93f936047990f9e836adc229.tar.gz cpython-e647b4766d93c8dc93f936047990f9e836adc229.tar.bz2 |
Fix buildbot issues due to _ctypes failing to compile in 3.1.
Recorded rollback of revisions 83837,83841 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
Diffstat (limited to 'Modules/_ctypes')
-rw-r--r-- | Modules/_ctypes/_ctypes.c | 8 | ||||
-rw-r--r-- | Modules/_ctypes/callbacks.c | 16 | ||||
-rw-r--r-- | Modules/_ctypes/ctypes.h | 3 | ||||
-rw-r--r-- | Modules/_ctypes/libffi/fficonfig.py.in | 2 | ||||
-rw-r--r-- | Modules/_ctypes/libffi_msvc/ffi.c | 10 | ||||
-rw-r--r-- | Modules/_ctypes/libffi_msvc/ffi.h | 8 | ||||
-rw-r--r-- | Modules/_ctypes/malloc_closure.c | 8 |
7 files changed, 18 insertions, 37 deletions
diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index 3d53a47..c1b3093 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -3367,7 +3367,7 @@ PyCFuncPtr_new(PyTypeObject *type, PyObject *args, PyObject *kwds) self->callable = callable; self->thunk = thunk; - *(void **)self->b_ptr = (void *)thunk->pcl_exec; + *(void **)self->b_ptr = (void *)thunk->pcl; Py_INCREF((PyObject *)thunk); /* for KeepRef */ if (-1 == KeepRef((CDataObject *)self, 0, (PyObject *)thunk)) { @@ -5326,42 +5326,36 @@ PyInit__ctypes(void) Struct_Type.tp_base = &PyCData_Type; if (PyType_Ready(&Struct_Type) < 0) return NULL; - Py_INCREF(&Struct_Type); PyModule_AddObject(m, "Structure", (PyObject *)&Struct_Type); Py_TYPE(&Union_Type) = &UnionType_Type; Union_Type.tp_base = &PyCData_Type; if (PyType_Ready(&Union_Type) < 0) return NULL; - Py_INCREF(&Union_Type); PyModule_AddObject(m, "Union", (PyObject *)&Union_Type); Py_TYPE(&PyCPointer_Type) = &PyCPointerType_Type; PyCPointer_Type.tp_base = &PyCData_Type; if (PyType_Ready(&PyCPointer_Type) < 0) return NULL; - Py_INCREF(&PyCPointer_Type); PyModule_AddObject(m, "_Pointer", (PyObject *)&PyCPointer_Type); Py_TYPE(&PyCArray_Type) = &PyCArrayType_Type; PyCArray_Type.tp_base = &PyCData_Type; if (PyType_Ready(&PyCArray_Type) < 0) return NULL; - Py_INCREF(&PyCArray_Type); PyModule_AddObject(m, "Array", (PyObject *)&PyCArray_Type); Py_TYPE(&Simple_Type) = &PyCSimpleType_Type; Simple_Type.tp_base = &PyCData_Type; if (PyType_Ready(&Simple_Type) < 0) return NULL; - Py_INCREF(&Simple_Type); PyModule_AddObject(m, "_SimpleCData", (PyObject *)&Simple_Type); Py_TYPE(&PyCFuncPtr_Type) = &PyCFuncPtrType_Type; PyCFuncPtr_Type.tp_base = &PyCData_Type; if (PyType_Ready(&PyCFuncPtr_Type) < 0) return NULL; - Py_INCREF(&PyCFuncPtr_Type); PyModule_AddObject(m, "CFuncPtr", (PyObject *)&PyCFuncPtr_Type); /************************************************* diff --git a/Modules/_ctypes/callbacks.c b/Modules/_ctypes/callbacks.c index dd19d80..5c82f77 100644 --- a/Modules/_ctypes/callbacks.c +++ b/Modules/_ctypes/callbacks.c @@ -16,8 +16,8 @@ CThunkObject_dealloc(PyObject *_self) Py_XDECREF(self->converters); Py_XDECREF(self->callable); Py_XDECREF(self->restype); - if (self->pcl_write) - ffi_closure_free(self->pcl_write); + if (self->pcl) + _ctypes_free_closure(self->pcl); PyObject_GC_Del(self); } @@ -370,8 +370,7 @@ static CThunkObject* CThunkObject_new(Py_ssize_t nArgs) return NULL; } - p->pcl_exec = NULL; - p->pcl_write = NULL; + p->pcl = NULL; memset(&p->cif, 0, sizeof(p->cif)); p->converters = NULL; p->callable = NULL; @@ -401,9 +400,8 @@ CThunkObject *_ctypes_alloc_callback(PyObject *callable, assert(CThunk_CheckExact((PyObject *)p)); - p->pcl_write = ffi_closure_alloc(sizeof(ffi_closure), - &p->pcl_exec); - if (p->pcl_write == NULL) { + p->pcl = _ctypes_alloc_closure(); + if (p->pcl == NULL) { PyErr_NoMemory(); goto error; } @@ -448,9 +446,7 @@ CThunkObject *_ctypes_alloc_callback(PyObject *callable, "ffi_prep_cif failed with %d", result); goto error; } - result = ffi_prep_closure_loc(p->pcl_write, &p->cif, closure_fcn, - p, - p->pcl_exec); + result = ffi_prep_closure(p->pcl, &p->cif, closure_fcn, p); if (result != FFI_OK) { PyErr_Format(PyExc_RuntimeError, "ffi_prep_closure failed with %d", result); diff --git a/Modules/_ctypes/ctypes.h b/Modules/_ctypes/ctypes.h index 27abe65..0af5fa1 100644 --- a/Modules/_ctypes/ctypes.h +++ b/Modules/_ctypes/ctypes.h @@ -58,8 +58,7 @@ struct tagCDataObject { typedef struct { PyObject_VAR_HEAD - ffi_closure *pcl_write; /* the C callable, writeable */ - void *pcl_exec; /* the C callable, executable */ + ffi_closure *pcl; /* the C callable */ ffi_cif cif; int flags; PyObject *converters; diff --git a/Modules/_ctypes/libffi/fficonfig.py.in b/Modules/_ctypes/libffi/fficonfig.py.in index 775c9e3..1029327 100644 --- a/Modules/_ctypes/libffi/fficonfig.py.in +++ b/Modules/_ctypes/libffi/fficonfig.py.in @@ -1,7 +1,5 @@ ffi_sources = """ src/prep_cif.c -src/closures.c -src/dlmalloc.c """.split() ffi_platforms = { diff --git a/Modules/_ctypes/libffi_msvc/ffi.c b/Modules/_ctypes/libffi_msvc/ffi.c index 65581a7..763d179 100644 --- a/Modules/_ctypes/libffi_msvc/ffi.c +++ b/Modules/_ctypes/libffi_msvc/ffi.c @@ -371,11 +371,10 @@ ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, extern void ffi_closure_OUTER(); ffi_status -ffi_prep_closure_loc (ffi_closure* closure, - ffi_cif* cif, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data, - void *codeloc) +ffi_prep_closure (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data) { short bytes; char *tramp; @@ -453,5 +452,6 @@ ffi_prep_closure_loc (ffi_closure* closure, closure->cif = cif; closure->user_data = user_data; closure->fun = fun; + return FFI_OK; } diff --git a/Modules/_ctypes/libffi_msvc/ffi.h b/Modules/_ctypes/libffi_msvc/ffi.h index efb14c5..a88d874 100644 --- a/Modules/_ctypes/libffi_msvc/ffi.h +++ b/Modules/_ctypes/libffi_msvc/ffi.h @@ -221,15 +221,11 @@ typedef struct { void *user_data; } ffi_closure; -void ffi_closure_free(void *); -void *ffi_closure_alloc (size_t size, void **code); - ffi_status -ffi_prep_closure_loc (ffi_closure*, +ffi_prep_closure (ffi_closure*, ffi_cif *, void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data, - void *codeloc); + void *user_data); typedef struct { char tramp[FFI_TRAMPOLINE_SIZE]; diff --git a/Modules/_ctypes/malloc_closure.c b/Modules/_ctypes/malloc_closure.c index 519941b..ae857a2 100644 --- a/Modules/_ctypes/malloc_closure.c +++ b/Modules/_ctypes/malloc_closure.c @@ -89,7 +89,7 @@ static void more_core(void) /******************************************************************/ /* put the item back into the free list */ -void ffi_closure_free(void *p) +void _ctypes_free_closure(void *p) { ITEM *item = (ITEM *)p; item->next = free_list; @@ -97,7 +97,7 @@ void ffi_closure_free(void *p) } /* return one item from the free list, allocating more if needed */ -void *ffi_closure_alloc(size_t ignored, void** codeloc) +void *_ctypes_alloc_closure(void) { ITEM *item; if (!free_list) @@ -106,7 +106,5 @@ void *ffi_closure_alloc(size_t ignored, void** codeloc) return NULL; item = free_list; free_list = item->next; - *codeloc = (void *)item; - return (void *)item; + return item; } - |