diff options
author | Guido van Rossum <guido@python.org> | 2007-04-27 23:53:51 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-04-27 23:53:51 (GMT) |
commit | 572dbf8f1320c0b34b9c786e5c30ba4a4b61b292 (patch) | |
tree | 27763a28b40b577302161008a00539649e2a536d /Objects | |
parent | d4617f24caa1827106f5ca5e74655adf919ea499 (diff) | |
download | cpython-572dbf8f1320c0b34b9c786e5c30ba4a4b61b292.zip cpython-572dbf8f1320c0b34b9c786e5c30ba4a4b61b292.tar.gz cpython-572dbf8f1320c0b34b9c786e5c30ba4a4b61b292.tar.bz2 |
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.
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/moduleobject.c | 5 | ||||
-rw-r--r-- | Objects/unicodeobject.c | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c index e454fcf..18914d8 100644 --- a/Objects/moduleobject.c +++ b/Objects/moduleobject.c @@ -59,6 +59,7 @@ PyModule_GetName(PyObject *m) { PyObject *d; PyObject *nameobj; + char *s; if (!PyModule_Check(m)) { PyErr_BadArgument(); return NULL; @@ -66,11 +67,13 @@ PyModule_GetName(PyObject *m) 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); } diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index ce28692..e2f1b2f 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -2072,7 +2072,6 @@ PyObject *unicodeescape_string(const Py_UNICODE *s, p = PyString_AS_STRING(repr); if (quotes) { - *p++ = 'u'; *p++ = (findchar(s, size, '\'') && !findchar(s, size, '"')) ? '"' : '\''; } @@ -2081,7 +2080,7 @@ PyObject *unicodeescape_string(const Py_UNICODE *s, /* Escape quotes and backslashes */ if ((quotes && - ch == (Py_UNICODE) PyString_AS_STRING(repr)[1]) || ch == '\\') { + ch == (Py_UNICODE) PyString_AS_STRING(repr)[0]) || ch == '\\') { *p++ = '\\'; *p++ = (char) ch; continue; @@ -2167,7 +2166,7 @@ PyObject *unicodeescape_string(const Py_UNICODE *s, *p++ = (char) ch; } if (quotes) - *p++ = PyString_AS_STRING(repr)[1]; + *p++ = PyString_AS_STRING(repr)[0]; *p = '\0'; _PyString_Resize(&repr, p - PyString_AS_STRING(repr)); |