summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS4
-rw-r--r--Python/ceval.c9
2 files changed, 9 insertions, 4 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 4e16038..3ad50b5 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@ What's New in Python 2.5 alpha 1?
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.
The name was removed from Include/code.h.
diff --git a/Python/ceval.c b/Python/ceval.c
index e2f38ac..2c2104e 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2997,13 +2997,14 @@ do_raise(PyObject *type, PyObject *value, PyObject *tb)
Py_DECREF(tmp);
}
- if (PyString_CheckExact(type))
+ if (PyString_CheckExact(type)) {
/* Raising builtin string is deprecated but still allowed --
* do nothing. Raising an instance of a new-style str
* subclass is right out. */
- PyErr_Warn(PyExc_PendingDeprecationWarning,
- "raising a string exception is deprecated");
-
+ if (-1 == PyErr_Warn(PyExc_PendingDeprecationWarning,
+ "raising a string exception is deprecated"))
+ goto raise_error;
+ }
else if (PyClass_Check(type))
PyErr_NormalizeException(&type, &value, &tb);