diff Objects/moduleobject.c @ 41558:29ae667f3239

Checkpoint. Manipulated things so that string literals are always unicode, and a few other compensating changes, e.g. str <- unicode, chr <- unichr, and repr() of a unicode string no longer starts with 'u'. Lots of unit tests are broken, but some basic things work, in particular distutils works so the extensions can be built, and test_builtin.py works.
author Guido van Rossum <guido@python.org>
date Fri, 27 Apr 2007 23:53:51 +0000
parents f731859e9b3b
children 2c54763c4504
line wrap: on
line diff
--- a/Objects/moduleobject.c	Fri Apr 27 20:16:19 2007 +0000
+++ b/Objects/moduleobject.c	Fri Apr 27 23:53:51 2007 +0000
@@ -59,6 +59,7 @@
 {
 	PyObject *d;
 	PyObject *nameobj;
+	char *s;
 	if (!PyModule_Check(m)) {
 		PyErr_BadArgument();
 		return NULL;
@@ -66,11 +67,13 @@
 	d = ((PyModuleObject *)m)->md_dict;
 	if (d == NULL ||
 	    (nameobj = PyDict_GetItemString(d, "__name__")) == NULL ||
-	    !PyString_Check(nameobj))
+	    !(PyString_Check(nameobj) || PyUnicode_Check(nameobj)))
 	{
 		PyErr_SetString(PyExc_SystemError, "nameless module");
 		return NULL;
 	}
+        if (PyUnicode_Check(nameobj))
+		nameobj = _PyUnicode_AsDefaultEncodedString(nameobj, "replace");
 	return PyString_AsString(nameobj);
 }