From: Thomas Heller Date: Mon, 10 Jul 2006 09:31:06 +0000 (+0000) Subject: Fixed a segfault when ctypes.wintypes were imported on X-Git-Tag: v2.5b2~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7b1da513fd5620e3046047af28a6cf38e753e6f5;p=thirdparty%2FPython%2Fcpython.git Fixed a segfault when ctypes.wintypes were imported on non-Windows machines. --- diff --git a/Misc/NEWS b/Misc/NEWS index 1a976a166c14..157c1653f5da 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 17bb1e830983..f786ead4bae6 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;