Kaydet (Commit) 8098ddbe authored tarafından Guido van Rossum's avatar Guido van Rossum

Subtle change to make None.__class__ work:

- descrobject.c:descr_check(): only believe None means the same as
  NULL if the type given is None's type.

- typeobject.c:wrap_descr_get(): don't "conventiently" default an
  absent type to the type of the object argument.  Let the called
  function figure it out.
üst f6309e8e
......@@ -91,9 +91,9 @@ wrapper_repr(PyWrapperDescrObject *descr)
static int
descr_check(PyDescrObject *descr, PyObject *obj, PyTypeObject *type,
PyObject **pres)
PyObject **pres)
{
if (obj == NULL || obj == Py_None) {
if (obj == NULL || (obj == Py_None && type != Py_None->ob_type)) {
Py_INCREF(descr);
*pres = (PyObject *)descr;
return 1;
......
......@@ -1862,8 +1862,6 @@ wrap_descr_get(PyObject *self, PyObject *args, void *wrapped)
if (!PyArg_ParseTuple(args, "O|O", &obj, &type))
return NULL;
if (type == NULL)
type = (PyObject *)obj->ob_type;
return (*func)(self, obj, type);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment