[Python-checkins] r60381 - in python/trunk: Modules/_ctypes/_ctypes.c Modules/_ctypes/callbacks.c Objects/abstract.c Objects/complexobject.c Objects/fileobject.c Python/compile.c

christian.heimes python-checkins at python.org
Mon Jan 28 03:07:53 CET 2008


Author: christian.heimes
Date: Mon Jan 28 03:07:53 2008
New Revision: 60381

Modified:
   python/trunk/Modules/_ctypes/_ctypes.c
   python/trunk/Modules/_ctypes/callbacks.c
   python/trunk/Objects/abstract.c
   python/trunk/Objects/complexobject.c
   python/trunk/Objects/fileobject.c
   python/trunk/Python/compile.c
Log:
static PyObject* variables should use PyString_InternFromString() instead of PyObject_FromString() to store a python string in a function level static var.

Modified: python/trunk/Modules/_ctypes/_ctypes.c
==============================================================================
--- python/trunk/Modules/_ctypes/_ctypes.c	(original)
+++ python/trunk/Modules/_ctypes/_ctypes.c	Mon Jan 28 03:07:53 2008
@@ -1529,9 +1529,9 @@
 
 	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 @@
 	}
 
 	if (format == NULL) {
-		format = PyString_FromString("%s(%r)");
+		format = PyString_InternFromString("%s(%r)");
 		if (format == NULL)
 			return NULL;
 	}

Modified: python/trunk/Modules/_ctypes/callbacks.c
==============================================================================
--- python/trunk/Modules/_ctypes/callbacks.c	(original)
+++ python/trunk/Modules/_ctypes/callbacks.c	Mon Jan 28 03:07:53 2008
@@ -368,7 +368,7 @@
 	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 @@
 	static PyObject *context;
 
 	if (context == NULL)
-		context = PyString_FromString("_ctypes.DllCanUnloadNow");
+		context = PyString_InternFromString("_ctypes.DllCanUnloadNow");
 
 	mod = PyImport_ImportModuleNoBlock("ctypes");
 	if (!mod) {

Modified: python/trunk/Objects/abstract.c
==============================================================================
--- python/trunk/Objects/abstract.c	(original)
+++ python/trunk/Objects/abstract.c	Mon Jan 28 03:07:53 2008
@@ -2142,7 +2142,7 @@
 	PyObject *bases;
 
 	if (__bases__ == NULL) {
-		__bases__ = PyString_FromString("__bases__");
+		__bases__ = PyString_InternFromString("__bases__");
 		if (__bases__ == NULL)
 			return NULL;
 	}
@@ -2220,7 +2220,7 @@
 	int retval = 0;
 
 	if (__class__ == NULL) {
-		__class__ = PyString_FromString("__class__");
+		__class__ = PyString_InternFromString("__class__");
 		if (__class__ == NULL)
 			return -1;
 	}

Modified: python/trunk/Objects/complexobject.c
==============================================================================
--- python/trunk/Objects/complexobject.c	(original)
+++ python/trunk/Objects/complexobject.c	Mon Jan 28 03:07:53 2008
@@ -261,14 +261,19 @@
 		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 @@
 		/* 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) {

Modified: python/trunk/Objects/fileobject.c
==============================================================================
--- python/trunk/Objects/fileobject.c	(original)
+++ python/trunk/Objects/fileobject.c	Mon Jan 28 03:07:53 2008
@@ -1965,7 +1965,7 @@
 	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;
 	}

Modified: python/trunk/Python/compile.c
==============================================================================
--- python/trunk/Python/compile.c	(original)
+++ python/trunk/Python/compile.c	Mon Jan 28 03:07:53 2008
@@ -1153,7 +1153,7 @@
 	int addNone = 1;
 	static PyObject *module;
 	if (!module) {
-		module = PyString_FromString("<module>");
+		module = PyString_InternFromString("<module>");
 		if (!module)
 			return NULL;
 	}
@@ -2001,7 +2001,7 @@
 	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;
 	}


More information about the Python-checkins mailing list