Possibly the end of SF [#460020] bug or feature: unicode() and subclasses.

Changed unicode(i) to return a true Unicode object when i is an instance of
a unicode subclass.  Added PyUnicode_CheckExact macro.
This commit is contained in:
Tim Peters 2001-09-11 03:07:38 +00:00
parent 0ebeb584a4
commit 78e0fc74bc
3 changed files with 16 additions and 6 deletions

View file

@ -425,12 +425,20 @@ PyObject *PyUnicode_FromEncodedObject(register PyObject *obj,
}
if (PyUnicode_Check(obj)) {
if (encoding) {
PyErr_SetString(PyExc_TypeError,
PyErr_SetString(PyExc_TypeError,
"decoding Unicode is not supported");
return NULL;
return NULL;
}
Py_INCREF(obj);
v = obj;
if (PyUnicode_CheckExact(obj)) {
Py_INCREF(obj);
v = obj;
}
else {
/* For a subclass of unicode, return a true unicode object
with the same string value. */
v = PyUnicode_FromUnicode(PyUnicode_AS_UNICODE(obj),
PyUnicode_GET_SIZE(obj));
}
goto done;
}
else if (PyString_Check(obj)) {