From: Brett Cannon Date: Mon, 27 Feb 2006 23:15:56 +0000 (+0000) Subject: Return value off PyErr_Warn() for raising string exceptions was not being X-Git-Tag: v2.4.3c1~54 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=68e4cbbcb6e129d468bf4a9e121684ce578735d5;p=thirdparty%2FPython%2Fcpython.git 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. --- diff --git a/Misc/NEWS b/Misc/NEWS index 9681782a661c..d216072e55f9 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 3779ae2bdbe8..474d89b1cd91 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);