diff Objects/moduleobject.c @ 61348:5260104db99d

module_repr(): use %U to format the file name Avoid useless encode/decode of the filename
author Victor Stinner <victor.stinner@haypocalc.com>
date Fri, 07 May 2010 00:50:12 +0000
parents a0951f11be3d
children cab14be0ada1
line wrap: on
line diff
--- a/Objects/moduleobject.c	Fri May 07 00:41:18 2010 +0000
+++ b/Objects/moduleobject.c	Fri May 07 00:50:12 2010 +0000
@@ -191,8 +191,8 @@
 	return _PyUnicode_AsString(nameobj);
 }
 
-const char *
-PyModule_GetFilename(PyObject *m)
+static PyObject*
+module_getfilename(PyObject *m)
 {
 	PyObject *d;
 	PyObject *fileobj;
@@ -208,6 +208,16 @@
 		PyErr_SetString(PyExc_SystemError, "module filename missing");
 		return NULL;
 	}
+	return fileobj;
+}
+
+const char *
+PyModule_GetFilename(PyObject *m)
+{
+	PyObject *fileobj;
+	fileobj = module_getfilename(m);
+	if (fileobj == NULL)
+		return NULL;
 	return _PyUnicode_AsString(fileobj);
 }
 
@@ -327,19 +337,19 @@
 module_repr(PyModuleObject *m)
 {
 	const char *name;
-	const char *filename;
+	PyObject *filename;
 
 	name = PyModule_GetName((PyObject *)m);
 	if (name == NULL) {
 		PyErr_Clear();
 		name = "?";
 	}
-	filename = PyModule_GetFilename((PyObject *)m);
+	filename = module_getfilename((PyObject *)m);
 	if (filename == NULL) {
 		PyErr_Clear();
 		return PyUnicode_FromFormat("<module '%s' (built-in)>", name);
 	}
-	return PyUnicode_FromFormat("<module '%s' from '%s'>", name, filename);
+	return PyUnicode_FromFormat("<module '%s' from '%U'>", name, filename);
 }
 
 static int