Make test_new pass.

This commit is contained in:
Guido van Rossum 2007-05-17 21:15:39 +00:00
parent 1a1f61b48f
commit bbbd4fdba2
2 changed files with 6 additions and 1 deletions

View file

@ -143,7 +143,7 @@ class NewTest(unittest.TestCase):
firstlineno, lnotab) firstlineno, lnotab)
# new.code used to be a way to mutate a tuple... # new.code used to be a way to mutate a tuple...
class S(str): class S(str8):
pass pass
t = (S("ab"),) t = (S("ab"),)
d = new.code(argcount, kwonlyargcount, nlocals, stacksize, d = new.code(argcount, kwonlyargcount, nlocals, stacksize,

View file

@ -482,6 +482,11 @@ func_new(PyTypeObject* type, PyObject* args, PyObject* kw)
&PyDict_Type, &globals, &PyDict_Type, &globals,
&name, &defaults, &closure)) &name, &defaults, &closure))
return NULL; return NULL;
if (PyUnicode_Check(name)) {
name = _PyUnicode_AsDefaultEncodedString(name, NULL);
if (name == NULL)
return NULL;
}
if (name != Py_None && !PyString_Check(name)) { if (name != Py_None && !PyString_Check(name)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"arg 3 (name) must be None or string"); "arg 3 (name) must be None or string");