diff options
author | Thomas Heller <theller@ctypes.org> | 2006-07-10 09:31:06 (GMT) |
---|---|---|
committer | Thomas Heller <theller@ctypes.org> | 2006-07-10 09:31:06 (GMT) |
commit | 7b1da513fd5620e3046047af28a6cf38e753e6f5 (patch) | |
tree | 5f97b40719adb91ef74fc2353e498ca3f6e0e9a2 | |
parent | dda068dee1937d0dd144568a83e2a47e5c26f9a2 (diff) | |
download | cpython-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/NEWS | 3 | ||||
-rw-r--r-- | Modules/_ctypes/_ctypes.c | 11 |
2 files changed, 12 insertions, 2 deletions
@@ -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; |