diff options
Diffstat (limited to 'Objects/complexobject.c')
| -rw-r--r-- | Objects/complexobject.c | 12 | 
1 files changed, 6 insertions, 6 deletions
| diff --git a/Objects/complexobject.c b/Objects/complexobject.c index 403c60c917..355b063f28 100644 --- a/Objects/complexobject.c +++ b/Objects/complexobject.c @@ -271,6 +271,12 @@ try_complex_special_method(PyObject *op) {      if (f) {          PyObject *res = PyObject_CallFunctionObjArgs(f, NULL);          Py_DECREF(f); +        if (res != NULL && !PyComplex_Check(res)) { +            PyErr_SetString(PyExc_TypeError, +                "__complex__ should return a complex object"); +            Py_DECREF(res); +            return NULL; +        }          return res;      }      return NULL; @@ -296,12 +302,6 @@ PyComplex_AsCComplex(PyObject *op)      newop = try_complex_special_method(op);      if (newop) { -        if (!PyComplex_Check(newop)) { -            PyErr_SetString(PyExc_TypeError, -                "__complex__ should return a complex object"); -            Py_DECREF(newop); -            return cv; -        }          cv = ((PyComplexObject *)newop)->cval;          Py_DECREF(newop);          return cv; | 
