summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Heller <theller@ctypes.org>2006-07-10 09:31:06 (GMT)
committerThomas Heller <theller@ctypes.org>2006-07-10 09:31:06 (GMT)
commit7b1da513fd5620e3046047af28a6cf38e753e6f5 (patch)
tree5f97b40719adb91ef74fc2353e498ca3f6e0e9a2
parentdda068dee1937d0dd144568a83e2a47e5c26f9a2 (diff)
downloadcpython-7b1da513fd5620e3046047af28a6cf38e753e6f5.zip
cpython-7b1da513fd5620e3046047af28a6cf38e753e6f5.tar.gz
cpython-7b1da513fd5620e3046047af28a6cf38e753e6f5.tar.bz2
Fixed a segfault when ctypes.wintypes were imported on
non-Windows machines.
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/_ctypes/_ctypes.c11
2 files changed, 12 insertions, 2 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 1a976a1..157c165 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -39,6 +39,9 @@ Core and builtins
Library
-------
+- Fixed a segfault in _ctypes when ctypes.wintypes were imported
+ on non-Windows platforms.
+
- Bug #1518190: The ctypes.c_void_p constructor now accepts any
integer or long, without range checking.
diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c
index 17bb1e8..f786ead 100644
--- a/Modules/_ctypes/_ctypes.c
+++ b/Modules/_ctypes/_ctypes.c
@@ -1384,13 +1384,20 @@ SimpleType_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
Py_DECREF(result);
return NULL;
}
+ fmt = getentry(PyString_AS_STRING(proto));
+ if (fmt == NULL) {
+ Py_DECREF(result);
+ PyErr_Format(PyExc_ValueError,
+ "_type_ '%s' not supported",
+ PyString_AS_STRING(proto));
+ return NULL;
+ }
+
stgdict = (StgDictObject *)PyObject_CallObject(
(PyObject *)&StgDict_Type, NULL);
if (!stgdict)
return NULL;
- fmt = getentry(PyString_AS_STRING(proto));
-
stgdict->ffi_type_pointer = *fmt->pffi_type;
stgdict->align = fmt->pffi_type->alignment;
stgdict->length = 0;