static PyObject* variables should use PyString_InternFromString() instead of PyObject_FromString() to store a python string in a function level static var.

This commit is contained in:
Christian Heimes 2008-01-28 02:07:53 +00:00
parent 908caac52e
commit d7e1b2bd17
6 changed files with 17 additions and 16 deletions

View File

@ -1529,9 +1529,9 @@ static PyObject *CreateSwappedType(PyTypeObject *type, PyObject *args, PyObject
if (suffix == NULL)
#ifdef WORDS_BIGENDIAN
suffix = PyString_FromString("_le");
suffix = PyString_InternFromString("_le");
#else
suffix = PyString_FromString("_be");
suffix = PyString_InternFromString("_be");
#endif
Py_INCREF(name);
@ -4416,7 +4416,7 @@ Simple_repr(CDataObject *self)
}
if (format == NULL) {
format = PyString_FromString("%s(%r)");
format = PyString_InternFromString("%s(%r)");
if (format == NULL)
return NULL;
}

View File

@ -368,7 +368,7 @@ long Call_GetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
static PyObject *context;
if (context == NULL)
context = PyString_FromString("_ctypes.DllGetClassObject");
context = PyString_InternFromString("_ctypes.DllGetClassObject");
mod = PyImport_ImportModuleNoBlock("ctypes");
if (!mod) {
@ -447,7 +447,7 @@ long Call_CanUnloadNow(void)
static PyObject *context;
if (context == NULL)
context = PyString_FromString("_ctypes.DllCanUnloadNow");
context = PyString_InternFromString("_ctypes.DllCanUnloadNow");
mod = PyImport_ImportModuleNoBlock("ctypes");
if (!mod) {

View File

@ -2142,7 +2142,7 @@ abstract_get_bases(PyObject *cls)
PyObject *bases;
if (__bases__ == NULL) {
__bases__ = PyString_FromString("__bases__");
__bases__ = PyString_InternFromString("__bases__");
if (__bases__ == NULL)
return NULL;
}
@ -2220,7 +2220,7 @@ recursive_isinstance(PyObject *inst, PyObject *cls, int recursion_depth)
int retval = 0;
if (__class__ == NULL) {
__class__ = PyString_FromString("__class__");
__class__ = PyString_InternFromString("__class__");
if (__class__ == NULL)
return -1;
}

View File

@ -261,14 +261,19 @@ PyComplex_AsCComplex(PyObject *op)
return ((PyComplexObject *)op)->cval;
}
/* If not, use op's __complex__ method, if it exists */
/* return -1 on failure */
cv.real = -1.;
cv.imag = 0.;
if (complex_str == NULL) {
if (!(complex_str = PyString_InternFromString("__complex__")))
return cv;
}
if (PyInstance_Check(op)) {
/* this can go away in python 3000 */
if (PyObject_HasAttrString(op, "__complex__")) {
if (PyObject_HasAttr(op, complex_str)) {
newop = PyObject_CallMethod(op, "__complex__", NULL);
if (!newop)
return cv;
@ -276,10 +281,6 @@ PyComplex_AsCComplex(PyObject *op)
/* else try __float__ */
} else {
PyObject *complexfunc;
if (!complex_str) {
if (!(complex_str = PyString_FromString("__complex__")))
return cv;
}
complexfunc = _PyType_Lookup(op->ob_type, complex_str);
/* complexfunc is a borrowed reference */
if (complexfunc) {

View File

@ -1965,7 +1965,7 @@ file_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
assert(type != NULL && type->tp_alloc != NULL);
if (not_yet_string == NULL) {
not_yet_string = PyString_FromString("<uninitialized file>");
not_yet_string = PyString_InternFromString("<uninitialized file>");
if (not_yet_string == NULL)
return NULL;
}

View File

@ -1153,7 +1153,7 @@ compiler_mod(struct compiler *c, mod_ty mod)
int addNone = 1;
static PyObject *module;
if (!module) {
module = PyString_FromString("<module>");
module = PyString_InternFromString("<module>");
if (!module)
return NULL;
}
@ -2001,7 +2001,7 @@ compiler_assert(struct compiler *c, stmt_ty s)
if (Py_OptimizeFlag)
return 1;
if (assertion_error == NULL) {
assertion_error = PyString_FromString("AssertionError");
assertion_error = PyString_InternFromString("AssertionError");
if (assertion_error == NULL)
return 0;
}