Mercurial > cpython-lru_cache-weakref
diff Objects/typeobject.c @ 42203:bbc094c328ef
Revert a wrong commit.
| author | Thomas Heller <theller@ctypes.org> |
|---|---|
| date | Wed, 11 Jul 2007 20:01:43 +0000 |
| parents | 854cc4d5a33d |
| children | e70cdce0e8b2 |
line wrap: on
line diff
--- a/Objects/typeobject.c Wed Jul 11 19:57:40 2007 +0000 +++ b/Objects/typeobject.c Wed Jul 11 20:01:43 2007 +0000 @@ -44,7 +44,6 @@ type_set_name(PyTypeObject *type, PyObject *value, void *context) { PyHeapTypeObject* et; - char *name; if (!(type->tp_flags & Py_TPFLAGS_HEAPTYPE)) { PyErr_Format(PyExc_TypeError, @@ -56,25 +55,19 @@ "can't delete %s.__name__", type->tp_name); return -1; } - if (PyString_Check(value)) { - value = PyUnicode_FromStringAndSize(PyString_AS_STRING(value), - PyString_GET_SIZE(value)); + if (PyUnicode_Check(value)) { + value = _PyUnicode_AsDefaultEncodedString(value, NULL); if (value == NULL) return -1; - /* XXX Isn't here a refcount leak? */ - } - if (!PyUnicode_Check(value)) { + } + if (!PyString_Check(value)) { PyErr_Format(PyExc_TypeError, "can only assign string to %s.__name__, not '%s'", type->tp_name, value->ob_type->tp_name); return -1; } - - name = PyUnicode_AsString(value); - if (name == NULL) - return -1; - - if (strlen(name) != PyUnicode_GET_SIZE(value)) { + if (strlen(PyString_AS_STRING(value)) + != (size_t)PyString_GET_SIZE(value)) { PyErr_Format(PyExc_ValueError, "__name__ must not contain null bytes"); return -1; @@ -87,7 +80,7 @@ Py_DECREF(et->ht_name); et->ht_name = value; - type->tp_name = name; + type->tp_name = PyString_AS_STRING(value); return 0; } @@ -1665,7 +1658,7 @@ } /* Check arguments: (name, bases, dict) */ - if (!PyArg_ParseTupleAndKeywords(args, kwds, "UO!O!:type", kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kwds, "SO!O!:type", kwlist, &name, &PyTuple_Type, &bases, &PyDict_Type, &dict))
