[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