summaryrefslogtreecommitdiffstats
path: root/Modules/_ctypes
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2010-08-10 00:22:01 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2010-08-10 00:22:01 (GMT)
commite647b4766d93c8dc93f936047990f9e836adc229 (patch)
tree981b1f990058bed6184d6b31cb238544fe532493 /Modules/_ctypes
parentbd25d598a54dc57271e009918977815377babda0 (diff)
downloadcpython-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.c8
-rw-r--r--Modules/_ctypes/callbacks.c16
-rw-r--r--Modules/_ctypes/ctypes.h3
-rw-r--r--Modules/_ctypes/libffi/fficonfig.py.in2
-rw-r--r--Modules/_ctypes/libffi_msvc/ffi.c10
-rw-r--r--Modules/_ctypes/libffi_msvc/ffi.h8
-rw-r--r--Modules/_ctypes/malloc_closure.c8
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;
}
-