From 7b1da513fd5620e3046047af28a6cf38e753e6f5 Mon Sep 17 00:00:00 2001 From: Thomas Heller Date: Mon, 10 Jul 2006 09:31:06 +0000 Subject: Fixed a segfault when ctypes.wintypes were imported on non-Windows machines. --- Misc/NEWS | 3 +++ Modules/_ctypes/_ctypes.c | 11 +++++++++-- 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; -- cgit v0.12