Commit a7446e34 authored by Brett Cannon's avatar Brett Cannon

Check the return code for PyErr_Warn() when warning about raising string

exceptions.  This was triggered when 'warnings' had a filter set to "error"
that caught the string exception deprecation warning.
parent a7444f47
...@@ -12,6 +12,10 @@ What's New in Python 2.5 alpha 1? ...@@ -12,6 +12,10 @@ What's New in Python 2.5 alpha 1?
Core and builtins Core and builtins
----------------- -----------------
- Properly check if 'warnings' raises an exception (usually when a filter set
to "error" is triggered) when raising a warning for raising string
exceptions.
- CO_GENERATOR_ALLOWED is no longer defined, this behavior is the default. - CO_GENERATOR_ALLOWED is no longer defined, this behavior is the default.
The name was removed from Include/code.h. The name was removed from Include/code.h.
......
...@@ -2997,13 +2997,14 @@ do_raise(PyObject *type, PyObject *value, PyObject *tb) ...@@ -2997,13 +2997,14 @@ do_raise(PyObject *type, PyObject *value, PyObject *tb)
Py_DECREF(tmp); Py_DECREF(tmp);
} }
if (PyString_CheckExact(type)) if (PyString_CheckExact(type)) {
/* Raising builtin string is deprecated but still allowed -- /* Raising builtin string is deprecated but still allowed --
* do nothing. Raising an instance of a new-style str * do nothing. Raising an instance of a new-style str
* subclass is right out. */ * subclass is right out. */
PyErr_Warn(PyExc_PendingDeprecationWarning, if (-1 == PyErr_Warn(PyExc_PendingDeprecationWarning,
"raising a string exception is deprecated"); "raising a string exception is deprecated"))
goto raise_error;
}
else if (PyClass_Check(type)) else if (PyClass_Check(type))
PyErr_NormalizeException(&type, &value, &tb); PyErr_NormalizeException(&type, &value, &tb);
......
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