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

thomas.heller python-checkins at python.org
Fri Jun 6 20:37:55 CEST 2008


Author: thomas.heller
Date: Fri Jun  6 20:37:55 2008
New Revision: 63988

Log:
Performance improvement: Use PyDict_Get/SetItem instead of
PyDict_Get/SetItemString.


Modified:
   python/trunk/Modules/_ctypes/callproc.c

Modified: python/trunk/Modules/_ctypes/callproc.c
==============================================================================
--- python/trunk/Modules/_ctypes/callproc.c	(original)
+++ python/trunk/Modules/_ctypes/callproc.c	Fri Jun  6 20:37:55 2008
@@ -122,12 +122,18 @@
 {
 	PyObject *dict = PyThreadState_GetDict();
 	PyObject *errobj;
+	static PyObject *error_object_name;
 	if (dict == 0) {
 		PyErr_SetString(PyExc_RuntimeError,
 				"cannot get thread state");
 		return NULL;
 	}
-	errobj = PyDict_GetItemString(dict, "ctypes.error_object");
+	if (error_object_name == NULL) {
+		error_object_name = PyString_InternFromString("ctypes.error_object");
+		if (error_object_name == NULL)
+			return NULL;
+	}
+	errobj = PyDict_GetItem(dict, error_object_name);
 	if (errobj)
 		Py_INCREF(errobj);
 	else {
@@ -138,8 +144,8 @@
 		errobj = PyCObject_FromVoidPtr(space, PyMem_Free);
 		if (errobj == NULL)
 			return NULL;
-		if (-1 == PyDict_SetItemString(dict, "ctypes.error_object",
-					       errobj)) {
+		if (-1 == PyDict_SetItem(dict, error_object_name,
+					 errobj)) {
 			Py_DECREF(errobj);
 			return NULL;
 		}


More information about the Python-checkins mailing list