diff Objects/classobject.c @ 42047:d678ba0177da

Add a format specifier %V to PyUnicode_FromFormat(), that works similar to %U, but requires an additional char * that will be used if the unicode object is NULL. Use %V in descrobject.c and classobject.c.
author Walter Dörwald <walter@livinglogic.de>
date Mon, 11 Jun 2007 16:36:59 +0000
parents 7990bb2759cb
children e70cdce0e8b2
line wrap: on
line diff
--- a/Objects/classobject.c	Mon Jun 11 16:12:10 2007 +0000
+++ b/Objects/classobject.c	Mon Jun 11 16:36:59 2007 +0000
@@ -227,7 +227,7 @@
 	PyObject *func = a->im_func;
 	PyObject *klass = a->im_class;
 	PyObject *funcname = NULL, *klassname = NULL, *result = NULL;
-	char *sfuncname = "?", *sklassname = "?";
+	char *defname = "?";
 
 	funcname = PyObject_GetAttrString(func, "__name__");
 	if (funcname == NULL) {
@@ -239,8 +239,6 @@
 		Py_DECREF(funcname);
 		funcname = NULL;
 	}
-	else
-		sfuncname = PyUnicode_AsString(funcname);
 	if (klass == NULL)
 		klassname = NULL;
 	else {
@@ -254,16 +252,16 @@
 			Py_DECREF(klassname);
 			klassname = NULL;
 		}
-		else
-			sklassname = PyUnicode_AsString(klassname);
 	}
 	if (self == NULL)
-		result = PyUnicode_FromFormat("<unbound method %s.%s>",
-					     sklassname, sfuncname);
+		result = PyUnicode_FromFormat("<unbound method %V.%V>",
+		                              klassname, defname,
+		                              funcname, defname);
 	else {
 		/* XXX Shouldn't use repr()/%R here! */
-		result = PyUnicode_FromFormat("<bound method %s.%s of %R>",
-		                              sklassname, sfuncname, self);
+		result = PyUnicode_FromFormat("<bound method %V.%V of %R>",
+		                              klassname, defname,
+		                              funcname, defname, self);
 	}
 	Py_XDECREF(funcname);
 	Py_XDECREF(klassname);