]> granicus.if.org Git - python/commitdiff
Fixed a segfault when ctypes.wintypes were imported on
authorThomas Heller <theller@ctypes.org>
Mon, 10 Jul 2006 09:31:06 +0000 (09:31 +0000)
committerThomas Heller <theller@ctypes.org>
Mon, 10 Jul 2006 09:31:06 +0000 (09:31 +0000)
non-Windows machines.

Misc/NEWS
Modules/_ctypes/_ctypes.c

index 1a976a166c146190f6c6ac91f1cf38803ad21c78..157c1653f5da7009172d1ba1c517039b064eafc5 100644 (file)
--- 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.
 
index 17bb1e830983a710696d6e3135f7d4b6fa9170c3..f786ead4bae691b7627788529faff655a1da1240 100644 (file)
@@ -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;