[Python-checkins] r50514 - in python/trunk: Misc/NEWS Modules/_ctypes/_ctypes.c

thomas.heller python-checkins at python.org
Mon Jul 10 11:31:07 CEST 2006


Author: thomas.heller
Date: Mon Jul 10 11:31:06 2006
New Revision: 50514

Modified:
   python/trunk/Misc/NEWS
   python/trunk/Modules/_ctypes/_ctypes.c
Log:
Fixed a segfault when ctypes.wintypes were imported on
non-Windows machines.


Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Mon Jul 10 11:31:06 2006
@@ -39,6 +39,9 @@
 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.
 

Modified: python/trunk/Modules/_ctypes/_ctypes.c
==============================================================================
--- python/trunk/Modules/_ctypes/_ctypes.c	(original)
+++ python/trunk/Modules/_ctypes/_ctypes.c	Mon Jul 10 11:31:06 2006
@@ -1384,13 +1384,20 @@
 		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;


More information about the Python-checkins mailing list