From 68e4cbbcb6e129d468bf4a9e121684ce578735d5 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Mon, 27 Feb 2006 23:15:56 +0000 Subject: Return value off PyErr_Warn() for raising string exceptions was not being checked. Problem when 'warnings' was set to "error" and thus would re-raise a new exception. --- Misc/NEWS | 4 ++++ Python/ceval.c | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index 9681782..d216072 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,10 @@ What's New in Python 2.4.3c1? Core and builtins ----------------- +- Fix missing check on whether the PendingDeprecationWarning for string + exceptions was re-raised as an actual PendingDeprecationWarning when + 'warnings' is set to a filter action of "error" + - Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter. - Patch #1400181, fix unicode string formatting to not use the locale. diff --git a/Python/ceval.c b/Python/ceval.c index 3779ae2..474d89b 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -2955,12 +2955,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 (PyErr_Warn(PyExc_PendingDeprecationWarning, + "raising a string exception is deprecated")) + goto raise_error; + } else if (PyClass_Check(type)) PyErr_NormalizeException(&type, &value, &tb); -- cgit v0.12