diff options
Diffstat (limited to 'Python/_warnings.c')
| -rw-r--r-- | Python/_warnings.c | 13 | 
1 files changed, 7 insertions, 6 deletions
| diff --git a/Python/_warnings.c b/Python/_warnings.c index bef5647..a1f4368 100644 --- a/Python/_warnings.c +++ b/Python/_warnings.c @@ -637,16 +637,17 @@ get_category(PyObject *message, PyObject *category)      if (rc == 1)          category = (PyObject*)message->ob_type; -    else if (category == NULL) +    else if (category == NULL || category == Py_None)          category = PyExc_UserWarning;      /* Validate category. */      rc = PyObject_IsSubclass(category, PyExc_Warning); -    if (rc == -1) -        return NULL; -    if (rc == 0) { -        PyErr_SetString(PyExc_ValueError, -                        "category is not a subclass of Warning"); +    /* category is not a subclass of PyExc_Warning or +       PyObject_IsSubclass raised an error */ +    if (rc == -1 || rc == 0) { +        PyErr_Format(PyExc_TypeError, +                     "category must be a Warning subclass, not '%s'", +                     Py_TYPE(category)->tp_name);          return NULL;      } | 
