[Python-checkins] r56348 - python/trunk/Modules/_ctypes/_ctypes.c

thomas.heller python-checkins at python.org
Fri Jul 13 15:59:40 CEST 2007


Author: thomas.heller
Date: Fri Jul 13 15:59:39 2007
New Revision: 56348

Modified:
   python/trunk/Modules/_ctypes/_ctypes.c
Log:
Repair COMError.  Since exceptions are new style classes now, setting
the methods and docstring after the type creation does not work, they
must be in the dictionary before creating the type.


Modified: python/trunk/Modules/_ctypes/_ctypes.c
==============================================================================
--- python/trunk/Modules/_ctypes/_ctypes.c	(original)
+++ python/trunk/Modules/_ctypes/_ctypes.c	Fri Jul 13 15:59:39 2007
@@ -4520,11 +4520,6 @@
 	PyObject *s;
 	int status;
 
-	ComError = PyErr_NewException("_ctypes.COMError",
-				      NULL,
-				      dict);
-	if (ComError == NULL)
-		return -1;
 	while (methods->ml_name) {
 		/* get a wrapper for the built-in function */
 		PyObject *func = PyCFunction_New(methods, NULL);
@@ -4539,13 +4534,24 @@
 		Py_DECREF(meth);
 		++methods;
 	}
-	Py_INCREF(ComError);
+
 	s = PyString_FromString(comerror_doc);
 	if (s == NULL)
 		return -1;
 	status = PyDict_SetItemString(dict, "__doc__", s);
 	Py_DECREF(s);
-	return status;
+	if (status == -1) {
+		Py_DECREF(dict);
+		return -1;
+	}
+
+	ComError = PyErr_NewException("_ctypes.COMError",
+				      NULL,
+				      dict);
+	if (ComError == NULL)
+		return -1;
+
+	return 0;
 }
 
 #endif


More information about the Python-checkins mailing list